如何在一行中从字段写警报?

时间:2015-07-24 14:33:40

标签: javascript regex

我正在使用正则表达式检查文本区域的输入,如果出现错误,则会发出警报

这是我的剧本:

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');
    }
}

如果你有很多这样的话可能很烦人

有没有办法将所有错误的行写入一个警报?

3 个答案:

答案 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');
}

这会收集数组中的无效行号,如果有任何行未通过测试,则只需调用警报。