如何在JQuery中使用IndexOf

时间:2013-07-21 19:55:36

标签: javascript jquery html blur indexof

if($('#this').val().indexOf('4289')){
    Do something
else
    Do something. 

这仅适用于4289
当我尝试使用'或'添加要在其旁边索引的其他数字时,它不起作用。我该怎么把其他号码。 E.g

IndexOf('4289||78843') 

我想要检查这个数字,如果输入字段中的数字不是其中之一,则回显错误。

当重新回到场地时,会发生更多事情。

$('#Zip').blur(function(){
        if (($(this).val().indexOf('0860') > -1)||($(this).val().indexOf('0850') > -1)){
        $('#Status_Zip').html("No way.")
        $(this).alterClass('*_*', 'Success')
        return false;
        }else{$('#Status_Code').hide()
        $(this).alterClass('*_*', 'Error')
        $(this).css('border-color', '#F00').css('background-color', '#FFC').effect("pulsate",{times:4},2)
            return true;
        }
    })

1 个答案:

答案 0 :(得分:20)

那是因为它会寻找字符串'4289||78843',这在我假设的目标中不存在。逻辑运算符不仅可以放在任何地方,只有在逻辑上可以运行的实际值的地方。像这样:

if(($('#this').val().indexOf('4289') > -1) ||
   ($('#this').val().indexOf('78843') > -1))

indexOf()函数的返回值是目标值中该值的数字索引,如果未找到,则返回-1。因此,对于您正在寻找的每个值,您需要检查它的索引是否为> -1(这意味着它在字符串中找到)。把整个条件和||用另一个条件,这是一个逻辑操作。

编辑关于你的评论,如果你想将它抽象成更清洁和更通用的东西,你可以将它提取到它自己的函数中,它迭代一串字符串并返回{{1如果它们中的任何一个在目标字符串中。也许是这样的:

true

在数组上使用function isAnyValueIn(target, values) { for (var i = 0; i < values.length; i++) { if (target.indexOf(values[i]) > -1) { return true; } } return false; } 甚至可能有更优雅的方法,但这至少证明了这个想法。然后在代码的其他地方构建值数组并调用函数:

.forEach()