触发文本框或下拉值更改不匹配

时间:2019-05-13 18:59:44

标签: javascript jquery

我有文本框和下拉菜单,我想同时比较两个值,并在每次发生变化且两者都不相等时触发警报。 假设如果我从下拉菜单中选择了6个数字,并且如果我没有在文本框中输入6个数字,那么它会触发警报,并且如果我在文本框中输入6个数字并在下拉菜单中选择12个数字,我也会得到警报。如何编写单个函数来检查这两个条件?

  $(document).ready(function () {
            $('#myDropdown').change(function () {
            
             var sixNumeric = /^[0-9]{6}$/;
              var twelveNumeric = /^.[0-9]{12}$/;
              
             var dropdown = $("#myDropdown").val();
             var textval = $("#myInput").val();
            
            if (myDropdown == 'text' ) {
               alert("enter only text");
                   
                }
                if (dropdown == "six") {
                    if (sixNumeric.test(textval) ==false ) {
                        alert("Must be 6 numeric");
                    }
                } 
                if (dropdown == "tweleve") {
                    if (twelveNumeric.test(textval) ==false ) {
                        alert("Must be 12 numeric");
                    }
                } 
            });
<select id="myDropdown">
    <option value="six">SixNumeric</option>
    <option value="tweleve">TwelveNumeric</option>
</select>
<input type="text" id="myInput"  value="" />

2 个答案:

答案 0 :(得分:0)

您的dropdown变量定义不正确。它引用stateCode的值,而应该引用下拉值。如果您更改此行

var dropdown = $("#stateCode").val();

var dropdown = $("#myDropdown").val();

它应该工作。

您还应该删除或更改此部分:

if (myDropdown == 'text' ) {
     alert("enter only text");
}

在您的代码中未定义myDropdown

答案 1 :(得分:0)

您的要求不是很清楚,但是我觉得您正在尝试做更多的事情。

如果“ sixnumeric”仅表示6位数字,则可以执行以下操作,例如从文本框中提取值,使用isNaN确定它是否为有效数字,以及是否通过该检查以针对下拉值进行验证。

抬起头,isNaN将在空格字符串或空字符串上返回true,因此您还需要检查这些情况。

isNaN:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN

isNaN和空字符串:Why does isNaN(" ") equal false