if($('#this').val().indexOf('4289')){
Do something
else
Do something.
这仅适用于 4289
,
当我尝试使用“或”在它旁边添加其他要索引的数字时,它不起作用。我应该如何输入其他号码。例如
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;
}
})
最佳答案
那是因为它会寻找字符串 '4289||78843'
,它在我假设的目标中不存在。逻辑运算符不能随便扔到任何地方,只能放在有实际值进行逻辑运算的地方。像这样:
if(($('#this').val().indexOf('4289') > -1) ||
($('#this').val().indexOf('78843') > -1))
indexOf()
函数的返回值是该值在目标值中的数字索引,如果未找到则为 -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()
甚至可能有更优雅的方法,但这至少证明了这个想法。然后在代码的其他地方构建值数组并调用函数:
var values = ['4289', '78843'];
var target = $('#this').val();
if (isAnyValueIn(target, values)) {
// At least one value is in the target string
}
关于javascript - 如何在 JQuery 中使用 IndexOf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17776280/