jQuery inArray只看第一个值

时间:2011-03-14 20:59:32

标签: javascript jquery

$('#client').keyup(function() {
    if ($('#client').val() != $('.recent_client').attr('id')) {
        $('.recent_client').removeClass('recent_client_active').addClass('recent_client_inactive');
    }
    else if (jQuery.inArray(parseInt($('#client').val()), client_ids)) {
        alert('IN ARRAY');
    }
});

我的HTML

<p><input type="text" name="client" id="client" placeholder="Click here and start typing your client name..."></p>

<div id="recent_clients">
<p><a href="#" class="recent_client recent_client_inactive" id="Client Name 1">Client Name 1</a><a href="#" class="recent_client recent_client_inactive" id="Client Name 2">Client Name 2</a><a href="#" class="recent_client recent_client_inactive" id="Client Name 3">Client Name 3</a><a href="#" class="recent_client recent_client_inactive" id="Client Name 4">Client Name 4</a><a href="#" class="recent_client recent_client_inactive" id="Client Name 5">Client Name 5</a><a href="#" class="recent_client recent_client_inactive" id="Client Name 6">Client Name 6</a></p>
</div>

我有一个数组,其中包含我的#recent_clients div中每个a的id值。简单的东西。我也有一个输入框。如果您输入其中一个最近客户端的全名,我希望该客户端名称突出显示。所以我假设jQuery.inArray会对此有所帮助,但它不起作用。如果我输入数组的第一个值(“客户端名称1”),我会收到警报。但是,如果我键入以下任何其他客户端名称(例如“客户端名称2”),则不会发生任何事情。

我可能在这里做错了什么?

1 个答案:

答案 0 :(得分:5)

由于inArray()的工作方式与indexOf类似,因此您应该测试结果为&gt; -1

<强>更新

    var client_ids = ['Client Name 1', 'Client Name 2', 'Client Name 3', 'Client Name 4', 'Client Name 5'];
$('#client').keyup(function() {
    if (jQuery.inArray($('#client').val(), client_ids) > -1) 
        $('#client').css('background-color','#00cc00');
    else
       $('#client').css('background-color','#cc0000');
});