【问题标题】:jquery if statement not functioning correctlyjquery if 语句无法正常运行
【发布时间】:2013-04-16 11:30:43
【问题描述】:

我正在编写一个非常简单的函数,但无法让 if 语句正常工作。

$("#supplyRequestTextbox-clients").live("blur", function() {
    var textboxValue = $(this).val().replace(/\d+/g, '').replace(" ", "");
    if (textboxValue == "NO ACCOUNT") {
        $(".controlBarTextboxNoAccount").fadeIn("fast");
    }
});

输入#supplyRequestTextbox-clients 中的值代表一个客户端,其组织方式如下:
id# 名字 姓氏 电子邮件 电话 示例:000001 John Doe johndoe@johndoe.com 123-456-7890

当没有找到帐户时,字符串完全如下所示: 000906 没有账户

在我的函数中,我去掉了数字和第一个空格,然后检查它是否在我的 if 语句中有效。我已经提醒 textboxValue 并且它正在正确传递,但是无论 textboxValue 是什么,if 语句都不会触发。

【问题讨论】:

    标签: javascript jquery if-statement


    【解决方案1】:

    将if条件改为:

    if(textboxValue.indexOf("NO ACCOUNT") !== -1)
    

    indexOf("NO ACCOUNT")textboxValue 中找到"NO ACCOUNT",如果找不到则返回-1。因此,如果 "NO ACCOUNT" 在您的字符串中的任何位置,这将是正确的。

    【讨论】:

    • 是的!谢谢,这工作得很好。我不敢相信我之前没有尝试过这样的事情,盯着它太久了。非常感谢您的帮助!
    • @radleybobins 不用担心,每个人都会遇到 :) 我刚刚想到的一个小问题:如果某些讨厌的用户出于某种原因输入NO ACCOUNT 作为他们的名字,这可能会导致问题。但这似乎不太可能......
    【解决方案2】:

    使用== 进行比较。您正在分配一个真实的值,因此该语句总是会触发。

    【讨论】:

    • 是的,我不敢相信我错过了。现在 if 语句永远不会触发,但有什么想法吗?
    • 您确定值中没有空格吗?您是否尝试过不替换数字和空格而只检查000906 NO ACCOUNT
    • 我喜欢你的头在哪里,但是有多个身份证号码取决于我在哪所学校工作......所以它可能是 000907 或 000908,我想保持维护添加额外学校时的最低要求,所以我不想每次添加学校时都添加额外的 OR,我宁愿去掉身份证号码
    【解决方案3】:

    将您的 if 条件更改为

    if (textboxValue == "NO ACCOUNT")
    

    如果你这样做

    if (textboxValue = "NO ACCOUNT")
    

    您实际上是将"NO ACCOUNT" 分配给textboxValue 并将结果评估为布尔值。

    【讨论】:

    • 所以现在无论 textboxValue 是什么,它都无法正常工作,有什么想法吗?
    • @radleybobins:你也去掉了空格,所以它可能就像NOACCOUNT。看看文本框的实际值是多少。
    • @blender 当我提醒 textboxValue 或将其附加到测试框中时,它会以适当的空格正确显示。仅删除第一个空格。
    • @radleybobins:请参阅this example。你的代码现在应该可以工作了,除非你没有告诉我们其他事情。
    【解决方案4】:

    尝试这样做:

    $("#supplyRequestTextbox-clients").live("blur", function() {
        var textboxValue = $(this).val().replace(/\d+/g, '').replace(" ", "");
    
        // check what textboxValue evaluates to:
        alert(textboxValue);
    
    if (textboxValue == "NO ACCOUNT") {
        $(".controlBarTextboxNoAccount").fadeIn("fast");
    }
    });
    

    【讨论】:

      【解决方案5】:
      1. 按照 Kolink 的建议,使用 == 进行比较。

      2. 您正在将 " " 替换为 "",IE。删除所有空格,这样您的 if 语句将永远不会返回 true。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-06
        • 1970-01-01
        • 2020-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-23
        相关资源
        最近更新 更多