我如何验证数组?

时间:2011-05-24 14:35:53

标签: javascript validation

我有一个包含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;
                            }   
        }

它适用于第一行,但是当用户选择多行时,即使在填充值之后,他也会收到验证错误消息。请有人帮我这个吗? 谢谢,继续微笑。

3 个答案:

答案 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)

这里非常简单的解决方案:

使用Jquery Inline Validator

向表中添加新的内容行时,只需确保定义了正确的类(例如class="validate[required,custom[email]]"),以确保它可以根据需要正确验证字段。我经常只是做必需的元素,但我上面给出的例子也进行了电子邮件格式检查。还有额外的内置检查程序,用于电话号码,货币等。

如果用户搞砸了一个输入,它会在错误字段旁边显示一个视觉上吸引人的工具提示,如对话框。

完成。简单。清洁。快。

这些解决方案都不能弥补您真正需要在服务器端进行清理的事实。任何Javascript都可以被绕过,因此并非100%保证安全或准确。但这是一个良好的开端,并为用户提供高质量的即时反馈。