javascript - Firefox/Javascript - 跟踪单击我的按钮时发生的情况

标签 javascript jquery events event-handling

当我点击几个我添加的新按钮时,发生了一些奇怪的事情。他们工作正常,但他们不断将页面滚动回屏幕顶部。我认为我的代码中的其他原因导致了它,因为我在其他地方确实有这种行为,但我无法弄清楚是什么干扰(此时我的代码非常大)。

了解单击按钮时发生的情况的最简单方法是什么?我知道 F12 调试器的基础知识,但除此之外,我有点一窍不通。我读过有关事件处理程序等的资料,但从未使用过它们,所以希望有一种更简单的方法来追踪它。

这是按钮代码。它看起来很好,它做了它应该做的事情,但也增加了不需要的行为。

$(document).on('click', '.friendly_submit', function () {
    // Work out our team ID.
    var OurTeamIDF = $('div').find('[data-ourteamid]');
    var OurTeamID = OurTeamIDF.data('ourteamid');
    var OpponentID = $(this).closest('form')
                            .find('.friendly_opponent')
                            .find(':selected').attr('data-OpponentID');
    var Venue = $(this).closest('form')
                       .find('.friendly_venue')
                       .find(':selected').text();
    var WhichFriendly = $(this).closest('form').attr('data-WhichFriendly');

    $.post('scripts/randomfriendly.php',
           {
               OurTeamID : OurTeamID,
               OpponentID : OpponentID,
               Venue : Venue,
               WhichFriendly : WhichFriendly
           },
           function (data) {
               console.log(data);
           }
    )
});

HTML代码如下。

echo "<form data-WhichFriendly = 0 class = 'box_center center'>";
    echo "<fieldset class = 'random_friendly_fieldset box_center'>";
        echo "<legend>Random Friendly</legend>";
        //echo "<p class = 'bold center underline'>Choose Opponent</p>";

        echo "Choose Opponent : <select class = 'friendly_opponent'>";
            foreach ($AllTeamsArray as $Team) {
                // Don't include ourselves in the list.
                if (trim($Team['Name']) <> trim($OurTeamName)) {
                    $TeamID = $Team['ID'];
                    echo "<option data-OpponentID = $TeamID>" . $Team['Name'] . " (" . $Team['League'] . ")</option>";
                }
            }
        echo "</select></br></br>";

        echo "Venue : <select class = 'friendly_venue'>";
            echo "<option>Neutral</option>";
            echo "<option>Home</option>";
            echo "<option>Away</option>";
        echo "</select></br></br>";

        echo "<button class = 'friendly_submit'>Submit</button>";
    echo "</fieldset>";
echo "</form>";

最佳答案

我想到了两件事:

1) 按钮是 type="submit" 并且正在提交表单(这会导致页面刷新)

2) 按钮是设置为 href="#'

的链接

编辑

现在您已经发布了代码,我正在更新我的答案。

更改您的代码,而不是捕获按钮上的点击事件,而是捕获表单上的提交事件。

$( "#add-form-id-here" ).submit(function( event ) {
  event.preventDefault();

  //change your handler so you get the correct values etc here.
});

然后确保将 type="submit" 添加到您的按钮。

关于javascript - Firefox/Javascript - 跟踪单击我的按钮时发生的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42256220/

相关文章:

javascript - 扣除金额问题,每次执行的值不同

javascript - 在 ReactJs 中将 javascript 数组作为 prop 传递

javascript - 如果输入无效,如何制作弹出窗口(警告框)?

javascript - 通过使用具有相同 id 的多行更改 optionsMenu 中的值来选中复选框

c++ - 在一个线程中等待 2 个不同的事件

javascript - 使用 phantomjs headless 运行 jasmine 规范

javascript - Materialize css select 无法处理 JS 错误

Java - PaintComponent 中的 MouseListener 操作事件

javascript - 根据星期几检查输入

javascript - 使用清除图标清除 IE10 上的文本输入时触发的事件