我有一个包含4列的表单,用户可以动态添加或删除行。 现在我尝试通过以下代码的javascript验证这一点: -
<script type="text/javascript">
function chkempty()
{
var x=document.forms["main"]["qty[]"].value
var y=document.forms["main"]["price[]"].value
var z=document.forms["main"]["item[]"].value
if (x==null || x=="") {
alert("Quantity must be filled out");
return false;
}
if (y==null || y=="") {
alert("Price must be filled out");
return false;
}
if (z==null || z=="") {
alert("Itemcode cannot be empty");
return false;
}
}
它适用于第一行,但是当用户选择多行时,即使在填充值之后,他也会收到验证错误消息。请有人帮我这个吗? 谢谢,继续微笑。
答案 0 :(得分:0)
var x = document.forms [“main”] [“qty []”]。value
我猜你应该循环遍历元素并验证每个值,而不是试图从数组中获取值。
var x=document.forms["main"]["qty"];
for ( var i=0, len=x.length; i<len; ++i ){
// validate the value of the current element.
}
编辑:添加了一个小例子。
答案 1 :(得分:0)
document.forms.form_id.control_name
将返回HTMLElementNode或NodeList,具体取决于是否存在一个或多个匹配元素。
您可以执行以下操作:
var x=document.forms["main"]["qty[]"]
if (x.nodeName) {
// Is a Node. Work with its value
} else {
// Is a NodeList, loop over it with for
for (var i = 0; i < x.length; i++) {
var node = x[i];
// Work with its value
}
}
答案 2 :(得分:0)
这里非常简单的解决方案:
向表中添加新的内容行时,只需确保定义了正确的类(例如class="validate[required,custom[email]]"
),以确保它可以根据需要正确验证字段。我经常只是做必需的元素,但我上面给出的例子也进行了电子邮件格式检查。还有额外的内置检查程序,用于电话号码,货币等。
如果用户搞砸了一个输入,它会在错误字段旁边显示一个视觉上吸引人的工具提示,如对话框。
完成。简单。清洁。快。
这些解决方案都不能弥补您真正需要在服务器端进行清理的事实。任何Javascript都可以被绕过,因此并非100%保证安全或准确。但这是一个良好的开端,并为用户提供高质量的即时反馈。