0

アプリケーションで国民 ID カード番号を検証しようとしています。しかし、それは機能していません。すべての値に対してエラーをスローします。正しいフォーマットを入力しても。私の形式は 123456789v または 123456789x です。ここに jQuery 検証を追加しました。誰でも私を助けてもらえますか?詳細が必要な場合は、コメントしてください。

$('.btn-submit').click(function(e) {

  required = ["employeeName","gender","employeeId","nic","firstName","lastName","departmentId","designation","address"];
  // Declare the function variables:
  // Parent form, form URL, email regex and the error HTML
  var $formId = $(this).parents('form');
  var formAction = $formId.attr('action');
  var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
  var nicReg=/^[0-9]{9}[vVxX]$/;
  var $error = $('<span class="error"></span>');

  // Prepare the form for validation - remove previous errors
  $('li',$formId).removeClass('error');

  $('span.error').remove();

  // Validate all inputs with the class "required"
  $('.required',$formId).each(function(){
    for (i=0;i<required.length;i++){
      var inputVal = $('#'+required[i]).val();
      var $parentTag = $('#'+required[i]).parent();
      if(inputVal == ''){
        $parentTag.addClass('error').append($error.clone().text('Required Field'));
      }

    }

    // Run the email validation using the regex for those input items also having class "email"
    if($(this).hasClass('nic') == true){
      var $parentTag2=$('#nic').parent();
      if(!nicReg.test(inputVal)){
        $parentTag2.addClass('error').append($error.clone().text('Enter valid NIC'));
      }
    }

    // Check passwords match for inputs with class "password"
    if($(this).hasClass('password') == true){
      var password1 = $('#password-1').val();
      var password2 = $('#password-2').val();
      if(password1 != password2){
        $parentTag.addClass('error').append($error.clone().text('Passwords must match'));
      }
    }

  });

  // All validation complete - Check if any errors exist
  // If has errors

  if ($('span.error').length > 0) {

    $('span.error').each(function(){

      // Set the distance for the error animation
      var distance = 5;

      // Get the error dimensions
      var width = $(this).outerWidth();

      // Calculate starting position
      var start = width + distance;

      // Set the initial CSS
      $(this).show().css({
        display: 'block',
        opacity: 0,
        right: -start+'px'
      })
      // Animate the error message
      .animate({
        right: -width+'px',
        opacity: 1
      }, 'slow');

    });
  } else {
    this.form.action = "DepartmentServlet?method=add";
    $formId.submit();

  }
  // Prevent form submission
  e.preventDefault();

});

// Fade out error message when input field gains focus
$('.required').focus(function(){
  var $parent = $(this).parent();
  $parent.removeClass('error');
  $('span.error',$parent).fadeOut();
});
});
4

1 に答える 1

0

一見すると、「inputVal」は「for」ループでのみ設定されます。nicReg.test() でテストされるのは最後の値だけです

于 2012-08-16T09:27:42.933 に答える