0

这是我的代码:

$("#addhash").submit(function(event) {
        // Cancel the default action
        event.preventDefault();

        // Store the value and remove any white space or disallowed chars
        var hash = $("#hashtoadd").val().replace(/\s/g, "").replace(/\W/g, "");

        // Check if anything was entered
        if(hash) {
            // Add the hashtag to the array
            hashes.push(hash);
            localStorage.hashes = JSON.stringify(hashes);
            var key = hashes.length - 1;

            // Clear the form field
            $("#hashtoadd").val("");

            // Set others to inactive
            $("#hashes").children().removeClass("active");

            // Add it to the list and make it the active page
            $("#hashes").append("<li class='active' id='" + key + "'><a href='#' class='close'>&times;</a><a class='hashtag' href='#" + hash + "'>#" + hash + "</a></li>");

            // Load the tweets
            getTweets(hash);
        }
});

此代码仅适用于 Chrome。似乎event.preventDefault();连开火都没有。我试图在一开始就设置一个警告对话框,但这也没有显示,这让我相信它甚至永远不会进入这里。我试过只使用一个click ()事件,也只使用一个submit()事件,但这些也不起作用。

编辑:我认为问题在于事件处理程序永远不会在其他浏览器中被调用。我已经更新了代码以反映它当前的状态。仍然无法正常工作。

EDIT2:根据要求,这是表单本身:

<form class="navbar-form pull-right" id="addhash">
    <div class="input-prepend input-append">
        <span class="add-on">#</span>
        <input type="text" placeholder="tag" tabindex="1" id="hashtoadd">
        <button class="btn" type="submit" href="#" id="submit"><i class="icon-plus"></i></button>
    </div>
</form>
4

1 回答 1

0

不确定这是否正是您的问题,但

“从 jQuery 1.7 开始,不推荐使用 .live() 方法。使用 .on() 附加事件处理程序。”

.live 仅在 DOM 中不存在所选对象时才需要使用,对于所有其他情况,您可以使用 .bind() 或表单 .submit()

于 2013-01-04T17:16:18.260 回答