javascript - 如何在 JQuery 中使用 IndexOf

标签 javascript jquery html blur indexof

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/

相关文章:

jquery - 根据评级更改星星颜色

jQuery 城市选择器?

jquery - 悬停在图像上时显示共享图标

javascript - 使用 DomSanitizer 绕过安全性后,安全值必须使用 [property]=binding

javascript - 未触发 GridView SelectedIndexChanged 事件

javascript - jstree:通过名称属性而不是id选择jstree中的节点

html - 将 CSS flex 元素的高度设置为相同的数量?

javascript - 当高度低于某个数字时隐藏 DIV 的正确逻辑是什么?

javascript - html2canvas 无法加载未定义的图像

javascript 使用浏览器时区解析日期字符串