2012-01-09 12 views
2

jQuery 1.7の最新のon()関数に問題があります。既存のlive()のすべての呼び出しを新しいon()関数に移しています。jQuery 1.7 .on()と動的フォームのキャッチ

これまで、私は新しい要素を作成したり、AJAXからマークアップを追加したりしたときにlive()を使用しました。

jQuery 1.7の場合フォームマークアップをAJAX経由で返信し、e.preventDefaultまたはreturn falseを使用して送信しないようにしてください(フォームの検証など) - フォームは正常に送信されます。

$(document).on('submit', 'form', function(e) { 
    alert('You tried to submit the form'); 
    e.preventDefault(); 
}); 
+0

ここでは完全に陽性ではありませんが、おそらくフォームに直接結合しようとしますか? – kand

+0

@kandそれは目的を破るでしょう。 –

+0

この問題の原因となるフィドルを作成できますか?それはhttp://jsfiddle.net/markcoleman/E6e79/1/のように働いているようです。 –

答えて

0

これは1.7.2で修正される、1.7.1にjQueryのバグとして確認されている:http://bugs.jquery.com/ticket/11145

私の元のコードは、(動的DOM要素の)正しいです。 Adam Rackisのコードは、既存のDOM要素に対して正しいです。

1

コードは完全に有効です。

DEMO

あなたには、いくつかのより多くのコードを投稿した場合、我々は見て、あなたは他のいくつかの問題


を持っているかどうかを確認することができるかもしれない。しかし、ページがレンダリングされるときに、このフォームと仮定すると存在しています、

$("form").on('submit', function(e) { 
    alert('You tried to submit the form'); 
    e.preventDefault(); 
}); 

(私はあなたのページがすでに現在の形でレンダリングされたと仮定しています):私はちょうどこれを行うだろう
+0

私の問題は私のフォーム要素の1つにあります。私は 'name =" disabled "という属性を、私が見る限り、完全に正式な名前属性にしました。 (私はこのフィールドを無効にしようとしていません。単に名前を 'disabled'にしてください) @Adamのコードの変更されたバージョンを参照してください[http://jsfiddle.net/HtA58/](オリジナルのデモ[ここ](http://jsfiddle.net/xzeVX/))。ご覧のように、フォームが提出されます。 これはjQueryのバグか、 'name =" disabled "'違法ですか? – steveneaston

+0

@steveneaston - 無効な名前かどうかはわかりません。それはhtml gurusの質問です:)あなたは 'html'' dom'と 'javascript'タグ付きで新しいQを尋ねたいかもしれません。 –

関連する問題