質問

次のコードのスニペットがあります:

$('#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;
});
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top