如果我有多行,则Javascript验证无效

时间:2013-12-26 07:31:30

标签: javascript php validation

我面临的问题是,如果有多行,则javascript验证无效。为什么不验证何时有多行?

的Javascript

function mstatusvalidate()
{
    if(document.mstatus.mealstatus.value == "empty")
    {
        alert("Meal status field should not be empty.");
        document.mstatus.mealstatus.focus();
        return false;
    }
    return true;
}

PHP HTML

if( mysql_result($m_result, $i, 'ActiveStatus') != 'empty' )
        {
            if( mysql_result($m_result, $i, 'ActiveStatus') == 'Y' )
            {
                echo "<td class=green >Active</td>";
            }
            else if( mysql_result($m_result, $i, 'ActiveStatus') == 'N' )
            {
                echo "<td class=red >Inactive</td>";
            }
        }
        else
            {
                echo "<td><form name=mstatus method=post onsubmit=return(mstatusvalidate()); action='voucherstatus_update.php?id_meal= " . mysql_result($m_result, $i, 'MealPlanID') . "'><select name=mealstatus><option value=empty></option><option value=active>Active</option><option value=inactive>Inactive</option></select><input type=submit class=update_status title=\"Update " . mysql_result($result, $i, 'GuestName') . " meals status\" value=Update></form></td>";
            }

html组合框形式的图像

This is the image

2 个答案:

答案 0 :(得分:1)

你走了:

<强>的JavaScript

function mstatusvalidate(f)
{
    if(f.mealstatus.value == "empty")
    {
        alert("Meal status field should not be empty.");
        f.mealstatus.focus();
        return false;
    }
    return true;
}

<强> PHP

echo "<td><form method=post onsubmit=\"return mstatusvalidate(this)\"; action='voucherstatus_update.php?id_meal= " . mysql_result($m_result, $i, 'MealPlanID') . "'><select name=mealstatus><option value=empty></option><option value=active>Active</option><option value=inactive>Inactive</option></select><input type=submit class=update_status title=\"Update " . mysql_result($result, $i, 'GuestName') . " meals status\" value=Update></form></td>";

答案 1 :(得分:0)

我怀疑你有几个同名的选择。如果您通过http发送表单,这是一个问题。如果您通过javascript收集数据,然后通过ajax将它们发送到服务器,这应该可以。

在后一种情况下,您必须更改方法以收集select for test。以下代码是概念证明,它仅适用于最新的浏览器,但应该是解决方案的良好起点。

function mstatusvalidate()
{
    var collection = document.querySelectorAll("select[name=mealstatus]");
    for(var i=0; i< collection.length; i++) {
        if (collection[i].value === "empty") {
            alert("Meal status field should not be empty.");
            collection[i].focus();
            return false;
        }
    }
    return true;
}