我有一个文本框,用户可以输入或粘贴逗号分隔值,例如A123456,B123456,C123456,D123456
这些条目需要符合某些标准,其中一个条件是它们的长度必须为七(7)个字符......不多也不少。
如果他们输入的值超过七个字符,我需要显示一条警告,告诉他们他们输入了一个字符太多的值。
问题是,可能有成千上万的这些条目和一个警告,只是说在数千个条目中的某个地方有一个或多个条目超过七个字符并不是那么有用。
我已用以下代码部分解决了这个问题:
val = document.getElementById("Textbox1").value;
val = val.split(',');
for(var i=0;i<val.length;i++){
if((val[i].length !=7) && (val[i].length !=0)){
alert("All entries must be seven (7) characters in lenght. Please correct the following entries:\n" + val[i]);
return false;
}
}
return true;
}
问题是,我一次只能返回一个错误的条目。因此,用户必须更正一个,再次运行验证以查看是否有另一个,并重复该过程,直到找到所有这些。
我想找出一种方法来显示警报中的所有错误条目。非常感谢任何帮助。
答案 0 :(得分:2)
如何使用filter
:
var val = document.getElementById("Textbox1").value,
err = $(val.split(',')).filter(function(){ return this.length != 7; }).toArray();
if (err.length) {
alert("All entries must be seven (7) characters in length. Please correct the following entries: \n" + err);
return false;
}
return true;
或grep
,如下:
var val = document.getElementById("Textbox1").value,
err = $.grep(val.split(','), function(a) { return a.length != 7; });
if (err.length) {
alert("All entries must be seven (7) characters in length. Please correct the following entries: \n" + err);
return false;
}
return true;
答案 1 :(得分:0)
开可以这样做:
- 在更改事件时,检查除最后一个值(尚未完成)的每个值。
如果键入逗号且最后一个不正确,请不要让用户继续输入并删除逗号(或者它将是无限循环)。
你已经解决了寻找错误的问题。
您还可以搜索某种setCursorPosition ..
答案 2 :(得分:0)
请勿使用alert()
。像这样制作一个<div>
并将所有消息附加到它,这样使用一次性获取所有消息。而且它也是一种更好的显示错误的方式。
HTML:
<div id="alerts"></div>
JS:
var errors=""; //put HTML for error messages here
$("#alerts").append(errors);
答案 3 :(得分:0)
您可以轻松地将所有错误条目存储到变量中,然后将所有条目的消息全部警告。
喜欢这个:
val = document.getElementById("Textbox1").value;
val = val.split(',');
var is_Error = false;
var ErrrMsg = "All entries must be seven (7) characters in lenght. Please correct the following entries:\n";
for(var i=0;i<val.length;i++){
if((val[i].length !=7) && (val[i].length !=0)){
ErrrMsg += val[i] + ",";
is_Error = true;
}
}
if(is_Error == true){
alert(ErrrMsg.substring(0,(ErrrMsg.length - 1)));/*Here "substring" is used to remove last comma into message string.*/
return false;
}
return true;