さまざまなフィールドの要件に応じて、JQuery がエラー メッセージを表示するフォームがあります。必要に応じて各フィールドの横にメッセージがポップアップするようにし、それぞれがフェードインし、3 秒のタイムアウトがあり、フェードアウトするようにします。
しかし、私は疑問に思っています:オブジェクトまたは配列にすべてのタイムアウトを格納する方法はありますか? 基本的に、すべてのエラーは現在、タイムアウトへの同じ参照から実行されています。したがって、1 つの入力でエラーが発生し、別の入力で 1 秒後にエラーが発生した場合、2 番目のメッセージは (3 秒ではなく) 2 秒で消えます。これは、すべてが 1 つのタイムアウト変数を参照しており、最初の発生で初期タイマーが設定されているためです。
これは注文フォーム用であるため、Product はDiv 'product'
エラーがトリガーされた入力の親を参照します。
私はこのようなものを持っています:
function error_check_number(input)
{
var intRegex = /^\d+$/;
var product = jQuery(input).closest('div.product');
if (!intRegex.test(input.val()) && input.val() != '')
{
input.val('0');
if (jQuery('div.error-message', product).length <= 0)
{
var error = jQuery("<div class='error-message'>Number Values Only</div>").hide();
error.appendTo(jQuery(product)).slideDown("fast");
}
var thetime = setTimeout(function(){
jQuery("div.error-message", product).slideUp("fast", function () {
jQuery("div.error-message").remove();
});
}, 3000);
}
else
{
clearTimeout(thetime);
jQuery("div.error-message", product).slideUp("fast", function () {
jQuery("div.error-message", product).remove();
});
}
}
タイムアウトに関する限り、エラーメッセージへの各呼び出しが互いに独立して機能することを望みます。