Как передать focus () после alert ()?

У меня что-то вроде:

<input type="textbox" id="partNumber" onChange="validatePart(this);">
<input type="textbox" id="quantity" onfocus="saveOldQuantity(this);">

Событие onChange - это правильное срабатывание после внесения изменений и текстовое поле теряет фокус. Когда величина получает фокус, событие onfocus запускается правильно, чтобы сохранить старое значение amount до внесения изменений.

Если validatePart ( ) обнаруживает недопустимое значение partNumber , предупреждает пользователя об этом факте. После сброса alert () я хотел бы вернуть фокус на вход partNumber . Но выполнение focus () на входном узле не дает ему фокус. Отладка здесь сложна, потому что взаимодействие с окном отладки IE, конечно же, меняет фокус.

Как я могу обеспечить возврат фокуса на partNumber , если ошибка обнаружена в validatePart () ?

РЕДАКТИРОВАТЬ: Простая версия validatePart () :

function validatePart(node) {
    if (!node.value) {
        alert('Please enter a part number.');
        node.focus();   // <======= why isn't this having any effect??
    }
}
9
задан Jonathan M 29 August 2011 в 18:39
поделиться