我一直在为表单创建JavaScript验证,但遇到了困难。目前有两个部分(目前)用于JavaSCript检查(电子邮件和短信)。脚本只运行电子邮件,而不是在检查短信时应该同时检查两者。如果两者都没问题则返回true。有什么想法吗?
function validateForm() {
var emailBoxChecked = document.getElementById("checkemail").checked
var emailBoxChecked = document.getElementById("checksms").checked
var errordiv = document.getElementById('error');
var errorsms = document.getElementById('errorsms');
/*postOptOutSix.checked = false;
postOptOutForever.checked = false*/
// Conditions
if (document.getElementById("emailradios") ==null && document.getElementById("emailforever") ==null) {
if (document.getElementById("smsforever") ==null && document.getElementById("smsforever") ==null) {
return true;
}
else if (document.getElementById("checksms").checked ==false && document.getElementById("smsOptOutSix").checked ==false && document.getElementById("smsOptOutForever").checked ==false) {
errordiv.innerHTML += "<p id='errorp' style='color:red;'>*SMS - Please either opt-in post or select either of the options.'";
return false;
} else {
return true;
}
}
else if (document.getElementById("checkemail").checked ==false && document.getElementById("emailOptOutSix").checked ==false && document.getElementById("emailOptOutForever").checked ==false) {
errorsms.innerHTML += "<p id='errorp' style='color:red;'>*Email - Please either opt-in post or select either of the options.'";
return false;
} else {
return true;
}
}
答案 0 :(得分:0)
class Foo
{
public:
void One();
};
void Two(Foo&);
int main()
{
Foo f;
f.One();
f.Two(); // This was valid in the proposal I saw
}
您正在设置来自不同元素的相同变量。难道不是这样的吗?
var emailBoxChecked = document.getElementById("checkemail").checked
var emailBoxChecked = document.getElementById("checksms").checked
答案 1 :(得分:0)
使用HTML required
和pattern
属性以及返回inputElement.checkValidity()
或true
的{{1}}。例如,您可以查看false
以确保所有输入都有效,如果是,则启用提交按钮,如果没有则禁用它。
答案 2 :(得分:0)
您需要将2个条件检查分开,然后在返回之前检查是否有些检查失败。
这样的事情可以解决问题:
function validateForm () {
var errors = [];
// Empty any previous errors
document.getElementById('error').innerHTML = "";
// Check for SMS
if (!document.getElementById("checksms").checked &&
!document.getElementById("smsOptOutSix").checked &&
!document.getElementById("smsOptOutForever").checked) {
// add the SMS error to the array
errors.push("<p id='errorp' style='color:red;'>*SMS - Please either opt-in post or select either of the options.'");
}
// Check for Email
if (!document.getElementById("checkemail").checked &&
!document.getElementById("emailOptOutSix").checked &&
!document.getElementById("emailOptOutForever").checked) {
// add the Email error to the array
errors.push("<p id='errorp' style='color:red;'>*Email - Please either opt-in post or select either of the options.'");
}
// Display the error(s) if any
if (errors.length > 0) {
errors.forEach(function (err) {
document.getElementById('error').innerHTML += err;
});
return false;
}
return true;
}
另外,我注意到id='errorp'
有两次。重命名其中一个。