我需要将输入字段中的第5个和第6个字符与选择菜单中的值匹配。
我会发布一些虚拟HTML来证明我的意思
<select class="mySelect">
<option value="AB"></option>
<option value="CD"></option>
<option value="EF"></option>
<option value="GH"></option>
</select>
<input type="text" class="myInput" />
我需要找到例如输入是(1111AB111)然后警告(真)...所有其他字符都不重要,我需要匹配第5和第6个字符。
答案 0 :(得分:1)
此代码经过测试并正常运行......
$(function() {
$("input.myInput").on("keyup", function() {
var text = $(this).val();
if (text.length < 6) return;
text = text.substr(4, 2);
var $option = $("select.mySelect option[value='" + text + "']");
if ($option.length == 0) return;
alert("Found " + text);
});
});
这是一个jsfiddle ......
答案 1 :(得分:1)
我做了一个jsFiddle,显示了一个粗略的方法,在这里:http://jsfiddle.net/TN5Ru/
function twoMatchingCharacters(selectElement,inputElement){
if($(selectElement).val() === $(inputElement).val().slice(4,6)){
$('p').text('That is a match');
}else{
$('p').text('That is not a match');
}
}
$('.mySelect').change(function(){
twoMatchingCharacters($('.mySelect'),$('.myInput'));
});
$('.myInput').keyup(function(){
twoMatchingCharacters($('.mySelect'),$('.myInput'));
});
显然,你不会想要更改页面上每个段落的文本,并且有更好的方法来绑定函数,但你应该明白这个想法。
答案 2 :(得分:0)
使用正则表达式
var n = str.match(/^.{4}(.{2})/);
然后n[1]
是第5和第6个字符串。
答案 3 :(得分:0)
正则表达式很强大,但在像你这样的情况下可能会不必要地消耗性能。你真正需要的是一个简单的子串函数:
if (yourString.substr(4, 2) == theOptionValue) {
// Do something
}
您也可以将其置于switch语句中,具体取决于您的具体情况。 jQuery是一个很棒的工具,但是不要忘记它是一个库而不是它自己的语言,并且可以用纯粹的老式JavaScript完成很多工作。
答案 4 :(得分:0)
尝试(测试):
$( "input.myInput" ).bind('keyup', function() {
var fifthandsixth = ($(this).val())[4] + ($(this).val())[5];
if ( $(".mySelect > option[value='" + fifthandsixth + "']")[0] ) {
alert("true");
} else {
// alert("false");
}
});