匹配第5个和第6个字符以选择值

时间:2012-10-17 14:40:07

标签: jquery regex

我需要将输入字段中的第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个字符。

5 个答案:

答案 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 ......

http://jsfiddle.net/UBhy9/

答案 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");
    }
});