2012-01-06 7 views
1

私は、AJAXを使って1つのフィールドのみを更新するクイック編集機能を備えたテーブルを持っています。問題は、私は同じページのフォームにボタンを持っており、そのボタンに付いているアクション(「フォームを送信したくない」など)が「起動」を押すたびに呼び出され、私の人生のためにそれを防ぐ方法。特定の場所で 'Enter'を押したときにボタンがフォームを送信しないようにする

私は以下のコードを試して、keyupイベント(おそらく間違っている)とボタンのデフォルトを防止しています。私の理解では、しかし、あなたがイベントではなく、オブジェクトのデフォルトを防ぐということですので、私は本当に何をすべきかわからない -

/** Capture a key press (while a field within the quick edit row is selected) */ 
qeRow.keyup(function(e){ 
    e.preventDefault(); // Also tried '$('#change-permissions-button').preventDefault' 
    if(e.keyCode === 27) { // Cancel on 'escape' (This is working fine) 
     return inlineEditUserGroup.revert(); 
    } else if(e.keyCode === 13) { // Save the data on 'enter' 
     return inlineEditUserGroup.save(); 
    } 
}); 

感謝。

答えて

3

keydownイベントまたはkeypressイベントを聞いてみてください。

qeRow.keypress(function(e){ 
    e.preventDefault(); // Also tried '$('#change-permissions-button').preventDefault' 
    if(e.keyCode === 27) { // Cancel on 'escape' (This is working fine) 
     return inlineEditUserGroup.revert(); 
    } else if(e.keyCode === 13) { // Save the data on 'enter' 
     return inlineEditUserGroup.save(); 
    } 
}); 

は、私はあなたに押された後、それが唯一のキーに耳を傾けているためからkeyupイベントは、「後半に」トリガされ推測、およびフォームより、すでに提出されています。

+1

チップがありがとうございます。私は 'e.preventDefault()'を 'else if(e.keyCode === 13) 'の下に移動しなければなりませんでした。そうしないとすべてのキーが押されていませんでした。ありがとう。 –

関連する問題