我使用javascipt验证表单,代码如下所示,
function validateForm() {
console.log("start check form");
var errors = [];
var form = document.getElementsByTagName('form')[0];
/*
* Store appropriate form elements.
* There are many ways to do this, but I'm keeping it
* simple for the example
*/
var fnElem = document.getElementById("name");
var lnElem = document.getElementById("phone");
var firstName = fnElem.value;
var lastName = lnElem.value;
// etc...
// validate required fields
if (firstName === "") {
errors.push({
elem: firstName,
message: "name can't be blank"
});
}
if (lastName === "") {
errors.push({
elem: lastName,
message: "phone can't be blank"
});
}
for(var i=0; i<errors.length;i++){
alert(errors[i].message);
}
return false;
}
并且在for循环中它会在窗口中发出很多次警报。 如何将所有警报合并到一条消息中......并且只提醒一次。
我知道我可以定义一个字符串并逐个追加,但这看起来很愚蠢。 有没有更好的方法来做到这一点。
答案 0 :(得分:1)
首先,将错误数组映射到包含的消息:array.map()
。
然后您可以加入消息:array.join()
。
if (errors.length) {
alert("Errors:\n" + errors.map(function (e) { return e.message; }).join('\n'));
}
答案 1 :(得分:1)
更改循环以将消息附加到变量,然后在循环后发出警报:
var messages = "";
for(var i=0; i<errors.length;i++){
messages += errors[i].message + "\n";
}
alert(messages)
答案 2 :(得分:0)
for( var sAlert = '', i = 0, iL = errors.length; i < iL; ++i ) {
sAlert += errors[i].message + '\n';
}
alert(sAlert );
我没有仔细查看你的代码,但如果一切都很好,这应该解决它:)