2011-05-24 42 views
0

我有一个有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

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

使用Jquery Inline Validator

当你添加新的内容线路表,只要确保你有适当的(如class="validate[required,custom[email]]"),以确保它能够正确地验证字段,如您所愿。我经常只做所需的元素,但我上面给出的例子也会对电子邮件格式进行检查。对于电话号码,货币等,还有其他内置检查器。

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

完成。简单。清洁。快速。

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

0

变种X = document.forms [ “主要”] [ “数量[]”]。值

您应该遍历所有的元素和验证,而不是试图让每个,我想是一个数组中的值。

var x=document.forms["main"]["qty"]; 
for (var i=0, len=x.length; i<len; ++i){ 
    // validate the value of the current element. 
} 

EDIT:加入一个小例子。

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