私は次のようなものを持っています:alert()の後にfocus()を与える方法?
<input type="textbox" id="partNumber" onChange="validatePart(this);">
<input type="textbox" id="quantity" onfocus="saveOldQuantity(this);">
変更が行われた後、onChange
イベントが正しく起動しています。 quantity
がフォーカスを得ると、変更が行われる前にonfocus
の古い値を保存するために、onfocus
イベントが適切に起動しています。
validatePart()
が無効なpartNumber
値を検出した場合、validatePart()
はそのことをユーザーに知らせます。 alert()
がクリアされたら、partNumber
入力にフォーカスを戻したいと思います。しかし、入力ノードでfocus()
を実行しても、フォーカスが与えられていません。 IEのデバッグウィンドウのやりとりはもちろん、フォーカスを変更するので、ここではデバッグが難しいです。
validatePart()
でエラーが検出された場合、どのようにしてフォーカスをpartNumber
に戻すことができますか?
EDIT: validatePart()
の単純なバージョン:
function validatePart(node) {
if (!node.value) {
alert('Please enter a part number.');
node.focus(); // <======= why isn't this having any effect??
}
}
あなたがフォーカスを設定する前に、小さなタイムアウトを試してみてもらえますか? – pimvdb
をそれはフォーカスが、ユーザーがクリックしたか、タブで選択しているどこに行く。画面が凍結されることはありません。私は何とかトンをキャンセルする必要がありますフォーカスを「partNumber」に戻すようにオーバーライドします。 –
ユーザーが別のタブを選択できないかどうかはわかりません。私は個人的にそれも好きではないでしょう。 – pimvdb