プロが教えるわが家の防犯対策術!

複数あるテキストエリア間を、enterキーでフォーカス移動をしたいです。
以下のようにしましたが、2つめのテキストエリアへフォーカス移動すると、改行が入力され、カーソルが2行目へ移動してしまいます。
enterキーを押しているのでこうなってしまうと思うのですが、
カーソルが1行目へ移動するようにするには、どうしたらいいでしょうか?
フォーカス移動後に改行コードがあったら、""にreplaceする・・等、試してみたのですが、なかなか上手くいきません。
どなたかお分かりになる方がいらっしゃったら、教えてください。

<HTML>
<HEAD>
<SCRIPT language="JavaScript">
<!--
function FirstFocus() {
document.forms.F1.elements[0].focus();
}
function nextFocus(n) {
if (event.keyCode == 13) {
for (var i = 0, f = n.form.elements; i < f.length; i++) {
if (f[i] == n) {
(f[i + 1] || f[0]).focus();
}
}
}
}
//-->
</SCRIPT>
</HEAD>
<BODY onload="FirstFocus()">
<FORM name="F1">
<TEXTAREA name="T1" rows="5" cols="30" onkeydown="nextFocus(this);"></TEXTAREA><BR>
<TEXTAREA name="T2" rows="5" cols="30" onkeydown="nextFocus(this);"></TEXTAREA><BR>
<TEXTAREA name="T3" rows="5" cols="30"></TEXTAREA><BR>
</FORM>
</BODY>
</HTML>

A 回答 (2件)

キーコードをチェックして CRだった場合のif文ブロックの最後に



event.returnValue = false;
を追加してみてください
    • good
    • 2
この回答へのお礼

できました。
ありがとうございます。感謝します。

お礼日時:2008/02/15 23:01

<html><body>


<form name="test">
<input type="text" name="a"><br/>
<textarea name="c" cols="20" rows="3"></textarea><br/>
<input type="text" name="b"><br/>
<input type="submit" value="submit">
</form>

<script>
window.onload = init;
function init(){ setFormRet2Tab( 'test' ) }
function setFormRet2Tab( form_name ){
obj = document.getElementsByName( form_name )[0];
for( var i=0; i<obj.length; i++){
if(i==0) obj[i].focus();
if(obj[i].type=='text' || obj[i].type=='textarea') obj[i].onkeydown = ret2tab;
}
}
function ret2tab() { var c = event.keyCode; if(c == 13) event.keyCode = 9; if(c == 27) event.srcElement.blur(); }
</script>
</body></html>
    • good
    • 0
この回答へのお礼

参考になりました。
ありがとうございます。

お礼日時:2008/02/15 23:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!