2011-04-05 45 views
0
while($data is comming from db) 
{ 
    <{form} name=formName.$uniqueValue action= onsubmit=return validate(this){>} 

    <input type=text name=sort_order[] value= value_from_db /> 
    <input type='submit' /> 
    <{/form}> 

} 

下面解决此问题的是JavaScript验证功能请与简单的JavaScript

{<}script language="javascript1.2"{>} 
{function} validate(obj) 
{ 

    var x = obj.elements['sort_order'].length; 




    var check = false; 

    for(var i =0; i <x; i++) 
    { 
     var array = Array(); 
     array = obj.elements['sort_order']; 
     var num= array[i]; 

     if(!isInteger(num.value)) 
     { 
      check = true; 
     } 


    } 

    if(check) 
    { 
     alert('Please enter a valid sort number'); 
     return false; 
    } 

    return true; 


} 

function isInteger(val) 
{ 

    if(val==null) 
    { 

     return false; 
    } 
    if (val.length==0) 
    { 

     return false; 
    } 
    for (var i = 0; i < val.length; i++) 
    { 
     var ch = val.charAt(i) 
     if (i == 0 && ch == "-") 
     { 
      return false; 
     } 
     if (ch < "0" || ch > "9") 
     { 
      return false; 
     } 
    } 
    return true; 
} 
</script> 

问题是,当我有价值观具有更多的则值1验证作品SORT_ORDER []文本字段形成帮助正常,但当我在SORT_ORDER只有一个值[] 请帮

回答

1

当输入字段名,则数组即,如果SORT_ORDER []仅包含一个元素然后在它不被视为一个阵列的JavaScript的问题是对象。所以这就是为什么我收到的价值是空的我已经把一个检查,如果该值为null,然后将其视为一个单一的元素,然后它工作正常。 -

0

保持默认的校验值真实,并使其虚假如果验证失败,也像这样

失败
var check = false; 

for(var i =0; i <x; i++) 
{ 
    var array = Array(); 
    array = obj.elements['sort_order']; 
    var num= array[i]; 

    if(!isInteger(num.value)) 
    { 
     check = true; 
    } 


} 

而对于检查整数值可以使用parseInt(val)

+0

问题是当输入字段名给出数组即如果sort_order []仅包含一个元素,那么在javascript中它不被视为Array对象。所以这就是为什么我收到的价值是空的我已经把一个检查,如果该值为null,然后将其视为一个单一的元素,然后它工作正常。 – 2011-04-05 09:04:59