私のフォームには、合計請求額から引き落とされる金額を受け入れる割引フィールドがあります (PHP で生成された HTML):
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 では動作しません。警告ボックスの代わりに確認ボックスも使用しようとしましたが、どちらも機能しませんでした (さらに、2 つのボタンは必要なく、「OK」ボタンのみが必要です)。
ユーザーが別のフィールドをクリックするかタブキーを押して割引フィールドを離れた後、割引額が合計請求額よりも大きい場合、フォーカスを割引フィールドに戻すにはどうすればよいですか?