jquery live入力要素で失敗する予防防止
-
28-09-2019 - |
質問
次のコードのスニペットがあります:
$('#messages input').live('keydown', function(e){
if(e.keyCode == 13) {
alert($(this).attr('value'));
e.preventDefault();
return false;
}
});
ここで、「#message入力」は明らかに入力テキスト要素のグループです。 「入力」キーをキャッチし、ページが更新されないようにしたいです。ただし、毎回失敗します。アラートは正常に機能しますが、PreventDefault()が機能していないようです。
誰かがアイデアを持っていますか?
編集: 私はASP.NETで働いており、フォーム要素の中にあることを述べるべきでした。フォーム要素から削除すると問題が解決しますが、DefundDefault()が機能していない理由を知りたいと思います。
解決 2
皮肉なことに、問題を引き起こしていたのはアラート自体でした。
Afaict、アラートは、PreventDefault()が有効になる前にJavaScriptの実行を停止しますが、ブラウザはキーストロークの処理を続け、フォームの送信をトリガーしました。
奇妙ですが、そこにあなたはそれを持っています。
他のヒント
試してみるかもしれません
e.stopPropagation()
$('#form_deal_step1').live('submit',function(){
$('.column .column_child select').not(':hidden').each(function(ev){
if($(this).val()=='?')
{
alert('Please select the ages of each child.');
ev.preventDefault();
return false;
}
});
})
var age_selected=1;
$('.column .column_child select').not(':hidden').each(function(){
if($(this).val()=='?')
{
age_selected=0;
}
});
if(age_selected==0)
{
alert('Please select the ages of each child.');
return false;
}
フォームが提出されていると思います keypress
, 、オンではありません keydown
. 。試す
$('#messages input').live('keypress', function(e){
if(e.keyCode == 13) {
alert($(this).attr('value'));
e.preventDefault();
return false;
}
});
私が知る限り、ページの更新は入力ボタンではなくフォームのデフォルト関数であるため、入力ではなくフォームのデフォルトを防ぐ必要があります。
の線に沿って何か:
$('#target').submit(function() {
return false;
});
所属していません StackOverflow