这里我试图将我的select标记值推入数组,但数组部分出现了一些错误。在代码中,我有两个相同的条件,所以当我在输入字段中输入5位数字时,它应该只显示两个值,而不是显示整个列表,并且它只能使用数组。有人能帮我吗?
代码:
<script type="text/javascript">
$(document).keyup(function(){
var arr=[];
$("#txtFirstNo").on("input", function() {
if ( $("#txtFirstNo").val().match(/^(d{5})$/, '') ) {
arr.push($("#selResult").val("aaa"));
//alert("hey");
}
if ( $("#txtFirstNo").val().match(/^(d{5})$/, '')) {
arr.push($("#selResult").val("bbb"));
}
if ( $("#txtFirstNo").val().match(/^(d{10})$/, '')) {
arr.push($("#selResult").val("ccc"));
}
$('#selResult').text(arr);
});
});
</script>
</head>
<body>
Number :
<input type="text" id="txtFirstNo" name="txtFirstNo" />
Options :
<select id="selResult" >
<option>Select</option>
<option value="aaa">AAA</option>
<option value="bbb">BBB</option>
<option value="ccc">CCC</option>
</select>
</body>
</html>
对代码的一些更改:
- 使用
input
事件获取任何更改(例如粘贴( - 使用
$("select").val("new value")
设置值 - ";新值";必须与
value=
选项之一匹配,并且区分大小写 - 可以使用
$("input").val().length
检查有多少个字符
为了便于测试,我将字符数减少到了2和4,并给出了更新的片段:
$("#txtFirstNo").on("input", function() {
$("#selResult").val("");
if ($(this).val().length >= 2) {
$("#selResult").val("aaa");
}
if ($(this).val().length >= 4) {
$("#selResult").val("bbb");
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="txtFirstNo" name="txtFirstNo" /> Result:
<select id="selResult">
<option></option>
<option value="aaa">AAA</option>
<option value="bbb">BBB</option>
</select>
这可以稍微改进(微优化(,因为它多次设置select
.val((,但在这种情况下是可以的
对于多选,直接在所需选项上设置selected
属性会更容易/更清晰。
以下示例使用多重选择和重叠条件(每当输入值以3个数字开头时,也会选择"CC"(。
$(document).keyup(function() {
let firstNo = $("#txtFirstNo").val();
// first clear any previously selected options
$('#txtResult option').prop('selected', false);
if (firstNo.match(/^d{10}$/, '')) {
$('#txtResult option[value="aaa"]').prop('selected', true);
}
if (firstNo.match(/^d{12}$/, '')) {
$('#txtResult option[value="bbb"]').prop('selected', true);
}
if (firstNo.match(/^d{3}/, '')){
$('#txtResult option[value="ccc"]').prop('selected', true);
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="txtFirstNo" name="txtFirstNo" />
Result:
<select id="txtResult" multiple>
<option value=""></option>
<option value="aaa">AAA</option>
<option value="bbb">BBB</option>
<option value="ccc">CCC</option>
</select>