【问题标题】:How to use IndexOf in JQuery如何在 JQuery 中使用 IndexOf
【发布时间】:2013-07-20 12:30:36
【问题描述】:
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;
        }
    })

【问题讨论】:

    标签: javascript jquery html blur indexof


    【解决方案1】:

    那是因为它会寻找字符串'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
    }
    

    【讨论】:

    • 好的,很好。它正在工作。唯一的问题是,如果我要输入超过 20 个这样的数字,那么代码就会很长,其中包含很多索引。我们不能在某处缩短一些东西吗? ?
    • @BlessingThinker:当然,它可以抽象成它自己的通用函数。任何时候在代码中进行大量复制/粘贴时,很可能至少可以提取一个函数。除了这个之外,可能还有更多的方法,但它看起来很简单。我已经用一个例子更新了答案。
    • 我使用了模糊,然后输入正确的数字,它验证正确,但是当您返回并将该数字更改为其他数字时,该功能似乎已经失效。
    • @BlessingThinker:听起来完全是一个不同的问题,我需要查看更完整的代码。
    • @BlessingThinker:定义“即将死去”。 blur 处理程序是否被调用?会发生什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    相关资源
    最近更新 更多