2012-04-02 16 views
1

ユーザーがタブを押した後、enterキーを押したときにシミュレーションを行いたいと思います。私はこれが悪いと知っているが、私はrunat = "server"を持つフォームを持つことができるasp.net Webアプリケーションを持っているので、ユーザーがメインフォームが返されたときに返されます。私はページ上に別のテキストボックスを持っていますが(それは理想的にはそれ自身のフォームを持っているはずですが、aspなのでできません)、そこからヒットするとメインフォームが送信されます。私が考えることができる最も簡単な方法は、タブをシミュレートしてからjavascriptを使用して入力することですが、失敗しました。私はこの問題に対する他の解決策を歓迎します。これまではタブをシミュレートしていましたが、複数のキーをシミュレートする方法はわかりません。javascriptで複数のキーをシミュレートする

これまでのコードはここにありますが、私はreturn 9を想像しています。他のものに置き換える必要があります。 JQueryもやります。

function suppressEnter (e) { 
    var keyPressed; 
    if (window.event) { keyPressed = window.event.keyCode } // IE 
    else if (e) { keyPressed = e.which }; // Netscape 
    if (keyPressed == 13) { 
     return 9; 
    } 
    else { 
     return true; 
    } 
} 

EDIT:return 9 + 13; Chromeで動作しますが、ないIE

+1

'9 + 13を返します。' '22を返すと言って同じである;'、それはdoesnのどうにかして両方の値を返す...ユーザが手動でタブを押した後、この状況で何が起こるか?私には、キーストロークをシミュレートするのではなく、直接コーディングする必要があるようです。 keydownイベントをトラップしている場合は、Enterキーのデフォルトの動作をキャンセルしてから、次のビットが何であれ... – nnnnnn

答えて

0

このような何かが働くだろう:

function keyPress(e) { 
    if (e.which == 13) { 
     $(document).trigger(jQuery.Event('keydown', {which: 9})); 
     // do something 
     alert('Enter') 
    } 
    if (e.which == 9) { 
     // do something 
     alert('Tab'); 
    } 

}; 

$(document).bind("keydown", keyPress); 

私はフィドルでそれをコード化しました - http://jsfiddle.net/FAe6U/@nnnnnnコメントに関して


また

あなたは私に思われる にキーストロークをシミュレートするのではなく、直接コードをコーディングしてください。

このお試しください:私はフィドルでそれをコード化しました

var tabPress; 
function keyPress(e) { 
    if (e.which == 13) { 
     if (tabPress == 1){ 
      e.preventDefault(); 
      alert('tab and enter'); 
     } 
     else{e.preventDefault(); alert('enter')} 
    } 
    else if (e.which == 9) { 
     e.preventDefault(); 
     tabPress = 1; 
    }; 
}; 

function keyRelease(){tabPress = 0;} 
$(document).bind("keydown", keyPress); 
$(document).bind("keyup", keyRelease); 

を - http://jsfiddle.net/f4Ybn/

+0

詳細な回答をいただきありがとうございます。私は2番目のボタンのクリックをシミュレートするためにコードの背後にこれを追加しました: 'RemindEmail.Attributes.Add(" onkeypress "、" javascript:if(event.which || event.keyCode){if((event.which == 13)||(event.keyCode == 13)){document.getElementById( '"+ SendPasswordReminderButton.ClientID +"').click(); falseを返す;}} else {return true}; "); ' タブをシミュレートしてからEnterキーを押すと、入力キーに無限ループが発生する恐れがありました。 2番目の方法はこれを組み込むように編集されている可能性がありますが、この方法はかなりシンプルでした。 – Andrew

関連する問題