Javascript ....让我疯狂......没有意义

时间:2012-03-12 00:48:15

标签: javascript

好的......所以我有这个:

function checkFields()
{
    var isEmpty = true;
    var fname = trim(document.getElementById("fname").value);
    var lname = trim(document.getElementById("lname").value);
    var ruid = trim(document.getElementById("ruid").value);

    if(fname != "" && lname != "" && ruid != "")
    {
        isEmpty = false;
        radioStatus(isEmpty);
    }
 }

如果我填写所有3个文本字段,它会使“isEmpty”错误就像它应该的那样(当我第一次加载页面时,它失败并且“isEmpty”保持为真如所述....但是如果我填写全部3,然后删除一个或两个...然后fname =“”和lname =“”和ruid =“”....但它将失败此测试,而不是使“isEmpty”真的像它应该。 ....即使在调试模式下,我看到变量是“”但它失败了..

这不应该是因为如果这些变量中的任何一个不是“”(因此在它们中有值)那么它将失败,因为我使用了AND ...对吗? ARG!请帮忙..

4 个答案:

答案 0 :(得分:2)

radioStatus(isEmpty)调用是否应该在if语句之后(以便为真正的 false情况调用它)?

注意:您可以按如下方式简化功能:

function checkFields()
{
    var fname = trim(document.getElementById("fname").value);
    var lname = trim(document.getElementById("lname").value);
    var ruid = trim(document.getElementById("ruid").value);

    radioStatus(fname == "" || lname == "" || ruid == "");
}

答案 1 :(得分:1)

在javascript中,您在声明变量时不必为变量赋值,因此您可能希望确保变量不为null或未定义。

或者,您可以尝试以下方式:

if(!!fname && !!lname && !!ruid)
{   isEmpty = false;
    radioStatus(isEmpty);
}

如果所有变量都具有“true-y”值,则执行该块。空字符串,null和undefined都是javascript中的“false-y”,所以上面的内容应该适合你。

答案 2 :(得分:0)

shouldn't this be that if any of these variables are NOT "" (thus have values in them) then it will fail since I used AND... right????

这个问题有点难以理解 - 因为你错过了很多背景 - 但是你的最后一句话: if ANY of these variables are NOT "" 是不正确的。如果你想要,你需要使用OR(||)而不是AND(&&)。

您现在所拥有的内容为:if ALL of these variables are NOT ""

答案 3 :(得分:0)

我同意Steve的观点,你假设有很多背景。这取决于运行javascript的时间。您是在提交表单,加载页面还是在某个其他位置上运行测试?如果你想在提交时这样做,你可能想尝试类似的东西:

$('#my-button').bind({
  //your check goes here
});