2

これは、Firebug によって示される HTML フォームのコードです。

<form action="http://localhost/home/newuser" method="post">
    <input type="hidden" value="48" name="user_id">
    <input type="text" name="username">
    <input type="submit" value="Next">
</form>

そして、これにバインドされた jQuery コードを次に示します。

$('.popup .newuser form').live('submit', function()
{
    $(this).ajaxSubmit(function(data)
    {
     // handle response
    });
    return false;
});

ただし、[次へ] ボタンをクリックすると、テキスト フィールドに以前に入力した値のコンボボックスが表示されます (Firefox の機能)。Firebug の [ネットワーク] タブに表示される HTML 要求はなく、jQuery リスナーのブレークポイントはヒットしません。

本当に明白な何かが欠けているように感じます...

更新:さらに奇妙なことが起こっていることに気付きました:キーボードからもテキスト フィールドに何も入力できません。Firefox コンボボックスから以前の値しか選択できません。その後、ボックス内のテキストを選択することさえできません。

4

5 に答える 5

1

It turns out the problem had nothing to do with jQuery or Javascript; instead it lay in the CSS, where a DIV containing the form had a z-index of 1, and was itself contained in a jQuery-UI dialog, which the framework gave a z-index of 1001. Apparently this caused the inner DIV (and thus the form) to not receive any keyboard or mouse events at all.

于 2012-04-12T08:02:25.410 に答える
0

使ってみません<form ... OnSubmit="yourfunction()"></form>か?

于 2012-04-10T12:09:18.297 に答える
0

私はこれをコメントに入れていただろうが、私にはまだそうする特権がないようだ。

jQuery 1.7以降、.live()メソッドは非推奨になりました。.on()を使用して、イベントハンドラーをアタッチします。古いバージョンのjQueryのユーザーは、.live()ではなく.delegate()を使用する必要があります。

編集

セレクターはスペースではなくコンマで区切ります。

$('form, .popup, .newuser')

お役に立てば幸い

于 2012-04-10T12:27:48.983 に答える
0
<form action="http://localhost/home/newuser" method="post">
    <input type="hidden" value="48" name="user_id" />
    <input type="text" name="username" />
    <input type="submit" value="Next" />
</form>

入力要素の最後に / を置きます

于 2012-04-10T11:56:57.933 に答える
0

.live()は非推奨になりました。クロスブラウザーのサポートについては、jQuery 1.7 以降を使用している場合は.on()を使用するか、それより前のバージョンで.delegate()を使用します。

.on() 例:

$(document).on('submit', '.popup .newuser form', function(){
    $(this).ajaxSubmit(function(data){
       // handle response
    });
    return false;
});

.delegate() の例:

$(document).on('.popup .newuser form', 'submit', function(){
    $(this).ajaxSubmit(function(data){
       // handle response
    });
    return false;
});
于 2012-04-10T12:29:21.530 に答える