使用jquery防止onclick执行

时间:2012-11-23 16:17:12

标签: javascript jquery

已更新

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事件停止了工作。我怎么能解决它?

P.S。请不要更改HTML代码。我有一些理由要问它,但请你能用javascript做吗?我意识到这可能不是最简单的方法,但我的应用程序中存在一些技术限制。

谢谢!

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

4 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分: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
})​;

答案 2 :(得分:1)

只需删除DOM处理程序即可完成此任务。无需return false;e.preventDefault();

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

DEMO

答案 3 :(得分:-3)

您正在寻找preventDefault

  

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

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