2016-07-16 5 views
1

投稿する前にポップアップフォームを検証するjavascript関数があります。残念ながら、ページごとに1つのポップアップフォームしか処理できません。
私の場合、私は2つの異なるポップアップフォームを持っていますので、何をするのか、どちらのものを指定したいのですか。一部のページで特定のフォームの検証を指定する

$.fn.goValidate = function() { 
var $form = this, 
    $inputs = $form.find('input:text'); 

var validators = { 
    email: { 
     regex: /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/ 
    } 
}; 
var validate = function(klass, value) { 
    var isValid = true, 
     error = ''; 

    if (!value && /required/.test(klass)) { 
     error = 'This field is required'; 
     isValid = false; 
    } else { 
     klass = klass.split(/\s/); 
     $.each(klass, function(i, k){ 
      if (validators[k]) { 
       if (value && !validators[k].regex.test(value)) { 
        isValid = false; 
        error = validators[k].error; 
       } 
      } 
     }); 
    } 
    return { 
     isValid: isValid, 
     error: error 
    } 
}; 
var showError = function($input) { 
    var klass = $input.attr('class'), 
     value = $input.val(), 
     test = validate(klass, value); 

    $input.removeClass('invalid'); 
    $('#form-error').addClass('hide'); 

    if (!test.isValid) { 
     $input.addClass('invalid'); 

     if(typeof $input.data("shown") == "undefined" || $input.data("shown") == false){ 
      $input.popover('show'); 
     } 

    } 
    else { 
    $input.popover('hide'); 
    } 
}; 

$inputs.keyup(function() { 
    showError($(this)); 
}); 

$inputs.on('shown.bs.popover', function() { 
    $(this).data("shown",true); 
}); 

$inputs.on('hidden.bs.popover', function() { 
    $(this).data("shown",false); 
}); 

$form.submit(function(e) { 

    $inputs.each(function() { 
     if ($(this).is('.required') || $(this).hasClass('invalid')) { 
      showError($(this)); 
     } 
    }); 
    if ($form.find('input.invalid').length) { 
     e.preventDefault(); 
     $('#form-error').toggleClass('hide'); 
    } 
}); 
return this; 
}; 
$('form').goValidate(); 

私はそれがすべての行についてだとかなり確信している:

$('form').goValidate(); 

はのは、最初のフォームIDがform_1と第二form_2であることを言ってみましょう。 私はこの行に何を置くべきですか?このような 何かは私が推測する:

$('form['form_1]').goValidate(); 

は、それは明らかだったホープ、ありがとう!

+2

あなたは '$( '#form_1')と書くでしょう。goValidate();' 'form_1'が最初のフォームのidであると仮定します。 –

+0

ロック!どのような迅速な応答、おかげで電車! :) – Remis07

答えて

1

フォームidを使用してフォームをターゲットにすることができます。

ex。あなたの最初のフォームがid form1の場合、あなたは書くことができます。

$('#form1').goValidate(); 

2番目と同じです。

関連する問題