-1

我需要将输入字段中的第 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) 然后 alert(true)... 所有其他字符都不重要,我需要匹配第 5 个和第 6 个字符。

4

5 回答 5

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/

于 2012-10-17T14:47:37.813 回答
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'));         
});

显然,您不会想要更改页面上每个段落的文本,并且有更漂亮的方法来绑定该功能,但您应该明白这一点。

于 2012-10-17T14:58:06.743 回答
0

使用正则表达式

var n = str.match(/^.{4}(.{2})/);

然后n[1]是第 5 个和第 6 个字符串。

于 2012-10-17T14:46:59.653 回答
0

正则表达式功能强大,但在像您这样的情况下会不必要地消耗性能。您真正需要的是一个简单的子字符串函数:

if (yourString.substr(4, 2) == theOptionValue) {
    // Do something
}

你也可以把它放在一个 switch 语句中,这取决于你的情况。jQuery 是一个很棒的工具,但不要忘记它是一个库而不是它自己的语言,而且很多事情都可以用纯老式的 JavaScript 完成。

于 2012-10-17T14:47:15.760 回答
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");
    }
});
于 2012-10-17T14:53:36.293 回答