好的......所以我有这个:
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!请帮忙..
答案 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
});