请帮助解决这个问题与简单的JavaScript

时间:2011-04-05 08:16:58

标签: javascript html validation forms

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验证功能

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

问题是当我的sort_order []文本字段的值形式有多于1的值时,验证工作正常但是当我在sort_order []中只有一个值时它失败了 请帮忙

2 个答案:

答案 0 :(得分:1)

问题是当输入字段名称被赋予数组时,即如果sort_order []只包含一个元素,则在javascript中它不被视为Array对象。所以这就是我接收的值为null的原因我已经检查了那里的值是否为null然后将其视为单个元素然后它工作正常。 -

答案 1 :(得分:0)

默认情况下保持检查值为true,如果一个验证也失败,则将其设为false

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)