50

event.preventDefault()これは、ここにある他のものと似たようなものですが、この場合は正しく使用していると思います。

コードを表示できるJSFiddleは次のとおりです。http://jsfiddle.net/SeEw2/2/

基本的に送信ボタンをクリックしてください。

Chrome の場合:何も起こらない - 正しい応答。

Firefoxの場合: ページがリロードされます。

では、ページが Chrome ではなく Firefox でリロードされるのはなぜですか? 私はそれをFirebuggingしてきましたが、どちらにもエラーは発生しません...

4

5 に答える 5

99

eventコード内の変数が初期化されていません。

http://jsfiddle.net/SeEw2/4/

エキス :

 $('#ajaxsearch').click(function(event) {

        // Stop the Search input reloading the page by preventing its default action
        event.preventDefault();
于 2011-01-03T16:02:28.980 に答える
9

ああ、私はその過去に同様の問題を抱えていました。event.preventDefault() ではなく、イベントを次の場所に渡してみてください。

    function ie8SafePreventEvent(e){
    if(e.preventDefault){ e.preventDefault()}
    else{e.stop()};

    e.returnValue = false;
    e.stopPropagation();        
}

IEと表示されていることは知っていますが、それ以来問題が発生したことはありません=]

于 2011-01-03T16:03:05.640 に答える
2

送信ボタンのクリック イベントを探す代わりに、$(form).submitハンドラーを使用してみませんか?

ハンドラーの最後に「return false」がある限り、ページはリロードされません。

于 2011-01-03T16:09:13.287 に答える
1

のようなイベントオブジェクトを渡していないためですが、私の質問は、と onclick に値を渡すfunction(event)ことができるのに、なぜこれらすべてを通過するのでしょうか? type="button"本質的に、このプロセス全体であなたがしていることです。

于 2011-01-03T16:02:38.803 に答える
0

I solved it this way, due my code is a little bit different this may be helpful for other people. My initial code looked like this.

<form id="enrollstudentform" onsubmit="return enrollStudents()">
    ...
</form>

My js function looked like

function enrollStudents() {
    // Stop Form.
    event.preventDefault();
    // Other code
}

I had to pass the parameter event in the function call and receive it in the function.

<form id="enrollstudentform" onsubmit="return enrollStudents(event)">
    ...
</form>

js code:

function enrollStudents(event) {
    // Stop Form.
    event.preventDefault();
    // Other code
}

I hope it helps.

于 2016-10-19T17:17:38.373 に答える