如何验证阵列

How do I Validate Arrays?

本文关键字:阵列 验证 何验证      更新时间:2023-09-26

我有一个表单,它有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;
                            }   
        }

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

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

使用Jquery内联验证器

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

如果用户混淆了一个输入,它将在带有错误的字段旁边显示一个视觉上吸引人的类似工具提示的对话框。

完成。易于理解的清洁的快速的

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

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.
 }

编辑:添加了一个小示例。

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
    }
}