我有一个表单,该表单使用文本字段(用于SMS编号)和布尔字段(用于SMS选择加入)向自身发布。当最终用户去发布表单时,我似乎无法正确获取语法以进行验证。
如果他们选择要加入的布尔值,那么表单应检查文本字段中的短信编号,如果短信编号为空,则显示错误。
这是我的JavaScript代码段:
if (document.getElementById("smsOpt").checked = 'true' && document.getElementById("smsNum").value = ''){
error += "smsOpt";
document.getElementById("smsOpt").focus();
document.getElementById("smsOptError").style.display='block';
}
答案 0 :(得分:1)
您可以执行以下操作:
if (document.getElementById("smsOpt").checked && document.getElementById("smsNum").value.trim() == ''){
error += "smsOpt";
document.getElementById("smsOpt").focus();
document.getElementById("smsOptError").style.display='block';
}
对于复选框,checked属性为boolean类型,因此仅使用“ checked”即可。对于第二个属性,您可以将其与一个空字符串进行比较。 JS中的Single =运算符用于赋值,而不是比较。
答案 1 :(得分:0)
在不同情况下,您必须使用==
或===
代替=
。
if (document.getElementById("smsOpt").checked == 'true' && document.getElementById("smsNum").value == ''){
error += "smsOpt";
document.getElementById("smsOpt").focus();
document.getElementById("smsOptError").style.display='block';
}
答案 2 :(得分:0)
在JavaScript =
中仅用于分配,因此您的if语句在输入中设置checked=true
而不是检查它是什么。 (或者实际上不管它是什么,都将其设置为true,然后评估将值始终设置为true的结果)
您需要使用==
或更高级的===
if (document.getElementById("smsOpt").checked === true && document.getElementById("smsNum").value.trim() === '') {
我还添加了trim()
,因此它忽略了是否仅插入空格。
答案 3 :(得分:0)
在这种情况下,实际上不需要使用任何等于运算符。您可以执行以下操作:
if (document.getElementById("smsOpt").checked && !document.getElementById("smsNum").value){
error += "smsOpt";
document.getElementById("smsOpt").focus();
document.getElementById("smsOptError").style.display='block';
}
但是,如果要使用它们,请使用三重===
或二重相等==
运算符进行操作。您可以检查这两个here之间的区别。