2

更新

html代码:

<input type="textbox" id="textbox" value="">
<input type="button" id="btn" value="Validate" onclick="document.write('VALIDATION PASSED')" />​

JS代码:

$(document).ready(function() {
    $("#btn").click(function() {
        if ($("#textbox").val().length == 0) {
            alert("Validation error");        
            return false;
        }
    }).prop("onclick", null );
})​

我已经更新了我的代码。所以问题是,第一次点击后我的 onclick 事件停止工作。我该如何解决?

PS请不要更改html代码。我有一些理由要问这个问题,但是请你只用javascript来做吗?我意识到这可能不是最简单的方法,但我的应用程序存在一些技术限制。

谢谢!

JSFiddle http://jsfiddle.net/B5GWx/12/

4

4 回答 4

7
$(document).ready(function() {
    $("#btn").click(function() {
        alert("Want to show only this message");        
        return false;
    }).prop("onclick", null );
})​

http://jsfiddle.net/B5GWx/5/

于 2012-11-23T16:18:51.797 回答
2

您不能可靠地跨浏览器使用 DOM2 处理程序来阻止 DOM0 处理程序运行。

但是,您可以做的是完全删除 DOM0 处理程序:

$(document).ready(function() {
    var btn = $("#btn");
    btn.click(function() {
        alert("Want to show only this message");        
        return false;
    });
    btn[0].onclick = null;   // <==== Here
})​;
于 2012-11-23T16:20:58.363 回答
1

只需删除 DOM 处理程序就可以完成这项工作。不需要return false;e.preventDefault();

$(document).ready(function() {
    $("#btn").click(function(e) {
        alert("Want to show only this message");        
    }).prop("onclick", null );
})​

演示

于 2012-11-23T16:30:21.167 回答
-3

您正在寻找preventDefault

说明:如果调用该方法,则不会触发事件的默认动作。

$(document).ready(function() {
    $("#btn").click(function(e) {
        alert("Want to show only this message");        
        e.preventDefault();
    })
})​
于 2012-11-23T16:18:31.860 回答