2017-02-07 4 views
0

検証フォームの入力値をどのように変更することができますか?検証フォームの入力値をどのように変更することができますか?

私のフォーム用の検証スクリプトがあります。

この機能は正常に機能しますが、クリック後のみ常に開始されます。変更input.val()

form# send - form 
input(type = "text" 
data - validate = "name") 
button(class = "form_btn") 


function validator(el, validName) { 
var mask_name = /^[A-Za-z0-9 ]{3,20}$/; 
var el = el; 

if (validName == "name") { 
    var el_val = $(el).val(); 
    if (mask_name.test(el_val)) { 
    $(el).removeClass('error'); 
    } else { 
    $(el).addClass('error'); 
    } 
} 
}); 

function mainValidation() { 

if ($('#send-form')) { 
    $('input').each(function() { 
    var this_el = $(this); 
    var validName = $(this).data("validate"); 

    validator(this_el, validName); 
    }); 
} 
}; 

$('.form_btn').on('click', function(e) { 
e.preventDefault(); 
mainValidation(); 
}); 

答えて

0

は、単に問題の入力フィールドのinputイベントのイベントハンドラを設定するときに、私が見てすることができますどのように 。

// You need to provide a selector that references the input field properly 
$('inputSelectorHere').on('input', mainValidation); 

ユーザーがblurイベントを使用して検証を行うために、入力フィールドを離れるまでまた待つことができる:

// You need to provide a selector that references the input field properly 
$('inputSelectorHere').on('blur', mainValidation); 
0

をあなたが入力変更イベントにバインドすることができます

$('input').on('change', function() { 
    var this_el = $(this); 
    var validName = $(this).data("validate"); 

    validator(this_el, validName); 
}); 
0

試行:

('input').on('change', function() { 
    mainValidation(); 
}); 

これで、すべての入力フィールドの変更をリッスンしています。フィールドが変更されると、関数mainValidation()が呼び出されます。

私に知らせてください。 乾杯。

+0

ようこそスタックオーバーフロー。あなたの答えは正しいかもしれませんが、なぜこれがうまくいくのか説明できれば、後で他の人が読むことができる恒久的な記録になるので役に立ちます。詳細については、http://stackoverflow.com/help/how-to-answerを参照してください。 – Mikkel

+0

こんにちは、あなたのヒントありがとうございます:) –

関連する問題