1

特定の値がテキストボックスに入力されたときに、フォーカスがテキストボックスにとどまるように(そしてアラートが本番環境で表示されるように)取得しようとしています。私はこれをFirefox3.5.7で動作させようとしていますが運がありません。

onchangeテキストボックスが特定の値である場合、テキストボックスにフォーカスされたままになる/再度フォーカスされるようにするにはどうすればよいですか?

実例はhttp://jsbin.com/ipinaにあります

<body>
Enter your name: <input type="text" name="fname" id="fname" onchange="
  if(this.value=='foo'){
    this.select();
    this.focus();
  }
  "  />
</body>

また、このコードを実行しても、エラーコンソールにjavascriptエラーや警告は表示されません。

4

2 に答える 2

2

イベントが発生するonchangeと、ユーザーはテキストボックスに集中します。

blur値が「foo」の場合は、イベントを使用してテキストボックスに再度フォーカスすることをお勧めします。

瞬時の結果が必要な場合は、を使用する必要がありますonkeyup

<body>
Enter your name: <input type="text" name="fname" id="fname" onkeyup="
  if(this.value=='foo'){
    this.select();
    this.focus();
  }
  "  />
</body>
于 2010-01-19T22:59:53.387 に答える
1

IE と FireFox で異なる Javascript onchangeによると、onchange イベントが発生した後にフォーカスを設定する必要があったため、次のような結果になる必要がありました。

Enter your name: <input type="text" name="fname" id="fname" onblur="
  if(this.value=='foo'){
    alert('bah');
    setTimeout('document.getElementById(\'fname\').focus();document.getElementById(\'fname\').select();',0);
  }
  "  />

また、必ずしもテキストが変更されたときではなく、フォーカスが失われたときにそれをキャッチする必要があったため、onchange の代わりに onblur を使用する必要がありました。

ライブ: http://jsbin.com/ofeva

于 2010-01-19T23:24:34.910 に答える