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イベントが機能しなくなったことです。どうすれば修正できますか?

PShtmlコードを変更しないでください。質問する理由がいくつかありますが、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 に答える