В моей форме есть поле скидок, в котором принимается сумма в долларах, которую нужно снять с общего счета (HTML, сгенерированный в PHP):
echo "<input id=\"discount\" class=\"text\" type=\"text\" name=\"discount\" onkeypress=\"return currency(this, event)\" onchange=\"currency_format(this)\" onfocus=\"on_focus(this)\" onblur=\"on_blur(this); calculate_bill()\"/><br/><br/>\n";
Функция JavaScript calculate_bill
вычисляет счет иснимает сумму скидки до тех пор, пока сумма скидки меньше общей суммы счета:
if(discount != ''){
if(discount - 0.01 > total_bill){
window.alert('Discount Cannot Be Greater Than Total Bill');
document.form.discount.focus();
}
else{
total_bill -= discount;
}
}
Проблема в том, что даже если скидка превышает общую сумму счета, фокус не возвращается к скидке.поле.Я попытался вызвать функцию calculate_bill
с помощью onchange
, но ни IE, ни Firefox не вернут фокус в поле скидки, когда я сделаю это таким образом.Когда я звоню calculate_bill
с onblur
, это работает в IE, но все еще не работает в Firefox.Я также попытался использовать окно подтверждения вместо окна предупреждения, но оно тоже не сработало (плюс я не хочу две кнопки, я только кнопку «ОК»).
Как я могу гарантировать, что фокус возвращается в поле скидки после того, как пользователь покинул это поле, щелкнув другое поле или вкладку, ЕСЛИ сумма скидки превышает общую сумму счета?