0

我正在尝试在我的应用程序中验证国民身份证号码。但它不起作用。它会为所有值引发错误。即使我输入正确的格式。我的格式应该是 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 回答