如何根据所选的选项值验证表单输入字段?

时间:2016-10-05 19:18:19

标签: javascript jquery regex validation

我在下拉字段中使用jQuery验证,根据所选选项,我必须验证下一个输入字段,即如果我选择了pan卡,则在下一个字段中允许使用字母数字字符。为此,我正在使用正则表达式。然后在选择Adhar卡时,只允许在下一个输入字段中使用数字值。 我想在用户点击下拉选项后验证它。我试过,但代码不起作用。请检查我的代码出错的地方。

$('#idproof').change(function() {

  var selection = $(this).val();
  if (selection == 'pan') {
    var val = document.registration.idnumber;
        var numbers = /^[0-9]+$/; 
    if (val.value.match(numbers)) {
      document.registration.zip.focus();
      return true;
    } else {
      $('#error').empty();
      $('#error').append('pan number must have  numeric characters only');
      val.focus();
      return false;
    }
  } else if (selection == 'Adhar') {
    var adhar = document.registration.idnumber;
    var letters = /^[0-9a-zA-Z]+$/;
    if (val.value.match(letters)) {
      document.registration.zip.focus();
      return true;
    } else {
      $('#error').empty();
      $('#error').append('Adhar number must have alphanumeric characters only');
      val.focus();
      return false;
    }
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<div id="error"></div>
<form id="reg" name="registration">
  <ul>
    <li>IdProof:
      <select id="idproof">
        <option value="Default">Please select a id type</option>
        <option value="pan">pancard</option>
        <option value="Adhar">AdharCard</option>
      </select>
    </li>
    <li>Id Number:
      <input type="text" id="idnumber" />
    </li>
  </ul>
</form>

1 个答案:

答案 0 :(得分:1)

您的代码的问题是未定义的变量,因此它抛出了错误。我已经解决了这个问题,并做了一些其他修改。

我认为,当更改任一输入并在两个更改事件之间共享功能时,您可以更好地显示错误。此外,您应该在显示消息之前检查空输入(我还没有添加它)。

&#13;
&#13;
var checkValidation = function() {
    $('#error').empty();
    var selection = $('#idproof').val();
    var val = document.registration.idnumber;
    if (val.value || val.value === 0) {
        if (selection === 'pan') {
            var numbers = /^[0-9]+$/; 
            if (val.value.match(numbers)) {
                // document.registration.zip.focus();
                return true;
            } else {
                $('#error').append('pan number must have  numeric characters only');
                val.focus();
                return false;
            }
        } else if (selection === 'Adhar') {
            var letters = /^[0-9a-zA-Z]+$/;
            if (val.value.match(letters)) {
                // document.registration.zip.focus();
                return true;
            } else {
                $('#error').append('Adhar number must have alphanumeric characters only');
                val.focus();
                return false;
            }
        }
    }

};

$('#idnumber').change(checkValidation);
$('#idproof').change(checkValidation);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<div id="error"></div>
<form id="reg" name="registration">
  <ul>
    <li>IdProof:
      <select id="idproof">
        <option value="Default">Please select a id type</option>
        <option value="pan">pancard</option>
        <option value="Adhar">AdharCard</option>
      </select>
    </li>
    <li>Id Number:
      <input type="text" id="idnumber" />
    </li>
  </ul>
</form>
&#13;
&#13;
&#13;