我正在使用正则表达式检查文本区域的输入,如果出现错误,则会发出警报
这是我的剧本:
var lines = dateinput.value.split(/\r?\n/);
for(var i = 0; i<lines.length ; i++){
if (lines[i].match(regex) == null) {
alert('There is an error in the ' + (i + 1) + ' line. Please enter a valid date formatted DD/MM/YYYY');
}
}
如果你有很多这样的话可能很烦人
有没有办法将所有错误的行写入一个警报?
答案 0 :(得分:1)
粗糙但这样的事情会起作用。
var lines = dateinput.value.split(/\r?\n/);
var wrongLines ="";
for(var i = 0; i<lines.length ; i++){
if (lines[i].match(regex) == null) {
wrongLines += i + 1 +",";
}
}
if(wrongLines != "")
alert('There is an error in the ' + wrongLines + ' line(s). Please enter a valid date formatted DD/MM/YYYY');
答案 1 :(得分:1)
将所有错误连接到单个消息(即字符串变量)并在运行for
循环后发出警告:
var lines = dateinput.value.split(/\r?\n/);
var message = '';
for(var i = 0; i<lines.length ; i++){
if (lines[i].match(regex) == null) {
message += 'There is an error in the ' + (i + 1) +
' line. Please enter a valid date formatted DD/MM/YYYY' + '\n';
}
}
if(message != '')
alert(message);
答案 2 :(得分:0)
是的。 (这是一个更好的答案,因为1.它不会多次写错误消息,而且2.它更快,因为连接数组比使用+=
连接字符串更好
var errors = [];
var lines = dateinput.value.split(/\r?\n/);
for(var i = 0; i<lines.length ; i++){
if (lines[i].match(regex) == null) {
errors.push(i + 1)
}
}
if(errors.length > 0){
alert('There is an error in the line(s) ' + errors.join(", ") + ' Please enter valid dates formatted DD/MM/YYYY');
}
这会收集数组中的无效行号,如果有任何行未通过测试,则只需调用警报。