2つのテキストフィールドを持つフォームがありonLoad="document.forms.obrazac.sifra.focus()"
、最初のフィールドにカーソルを置きます。ここで、ユーザーがEnterキーを押してカーソルを2番目のフィールドにフォーカスし、Enterキーをもう一度押すと、フォームを送信したいと思います。どうすればそれができますか、ありがとう。
5840 次
4 に答える
2
デフォルトの動作を破ることは間違いなく良くありません。ところで、autofocus
HTMLの属性を知っていますか?
どうしてもこれが必要な場合は、次のようにします。
document.forms.obrazac.onkeypress = function( e ) {
// If the hit key is "Enter"
if ( e.keyCode === 13 ) {
// Cross-browser handling for our dear friend @MaxArt :p
var evt = e || window.event,
target = evt.target || evt.srcElement,
// Find the next input
nextInput = target.nextSibling;
while ( nextInput.tagName !== 'INPUT' && nextInput.nextSibling ) {
nextInput = nextInput.nextSibling;
}
// And focus it
nextInput.focus();
// Finally, disable submitting IF there is no input after
if ( nextInput !== this.elements[ this.elements.length - 1 ] ) {
return false;
}
}
};
于 2012-05-22T14:45:31.020 に答える
1
ほんの短い、実際にはないtestetサンプル...あなたにアイデアを与えるためだけに:
<head>
<script type="text/javascript">
function onKeyPress(args)
{
if(args.keyCode === 13)
document.getElementById("tb2").focus();
}
</script>
</head>
<body>
<input type="text" onkeypress="onKeyPress(event);" id="tb1" />
<input type="text" id="tb2" />
</body>
tb2でも同じことを実行して、「ENTER」でフォームを送信できます。また、jQueryのようなものを使用して、マークアップで直接ではなく、javascriptでイベントをバインドします。
それが役に立てば幸い。
@答えがないところにサンプルを作成し始めたので=)
于 2012-05-22T15:07:21.717 に答える
0
私はデフォルトの振る舞いを破ることはしません、それはユーザーにとってかなり迷惑で直感に反します、しかしあなたが本当にそれをしたいのなら、あなたはjqueryでこのようなことをすることができます:
$('#form').keydown(function(e) {
if( e.keyCode === 13) { // When "Shift + Enter"
e.preventDefault();
// focus on next field here.
}
});
これを行う代わりに、次のように(tabindexを使用して)正しいタブ順序を作成する方がよいでしょう。
<input type="text" name="field1" tabindex=1 /><br />
于 2012-05-22T14:48:39.760 に答える
-1
これを試して:
document.forms.obrazac.sifra.addEventListener("keyup", function(e) {
if (e.keyCode === 13) { // 13 === enter key
e.preventDefault();
this.nextSibling.focus();
}
});
これらのことに注意してください:
- 私はを使用
addEventListener
しましたが、IE8以前では、グローバルオブジェクトを使用attachEvent("onkeyup"...
してチェックする必要があります。event
またe.preventDefault();
、e.returnValue = false;
- それ
this.nextSibling
が次の分野だと思いました。DOMに合うようにこれを修正してください。
于 2012-05-22T14:46:55.733 に答える