1

phpを使用して動的に作成されるフォームの配列があります。

フォーム名はphp$formcount変数を使用して作成され、whileループを使用してインクリメントされます。したがって、作成された複数のフォームの場合、フォーム名はupdate1update2update3などになります。

各フォームに検証が必要なドロップダウンメニューがあります。フォームの名前は毎回変更されるため、JavaScriptを使用して各フォームを個別に検証することはできません。

$formcount=0;
while($info=mysql_fetch_array($agent_q))
{
......
echo('
<form name="update'.$formcount.'" method="post" onsubmit="return CheckUpdate(this);">
<select name="login_time" id="login_time">
<option value="none">Select Login</option>
<option value="00:30">00:30</option>
<option value="02:30">02:30</option>
<option value="03:30">03:30</option>
<option value="04:30">04:30</option>
<option value="06:30">06:30</option>
<option value="09:30">09:30</option>
<option value="12:30">12:30</option>
<option value="13:30">13:30</option>
<option value="16:30">16:30</option>
<option value="17:30">17:30</option>
<option value="18:30">18:30</option>
<option value="19:30">19:30</option>
<option value="20:30">20:30</option>
<option value="21:30">21:30</option>
<option value="22:30">22:30</option>
</select></form>');
.....
}

私のJSは

function CheckUpdate(){
    if(document.????==0){
    alert("Select Login Time!\r\n");
    return false;
    }
    else
    return true;
}

???の代わりに何を置くべきかわからない。これはかなり簡単なことだと思います。どんな助けでも大歓迎です。ありがとうございました!

4

2 に答える 2

1

アプローチする方法はいくつかあります。おそらく最も簡単なのは (既存の PHP を変更する必要がない)form.elementsコレクションを使用することです。あなたの場合<select>elements[0]

// The form node is passed in the function call as (this)
function CheckUpdate(node){
    // The first form element in the form node passed to the function is the <select>
    // Test that a value other than the default is selected...
    if (node.elements[0].value == 'none'){
      alert("Select Login Time!\r\n");
      return false;
    }
    else return true;
}

これを管理する他の方法もあります。たとえば、<select>内に常に 1 つしか<form>なく、必ずしも最初の位置にあるとは限らない場合、現在の子として取得するために[0]使用できます。getElementsByTagName()<form>

function CheckUpdate(node){
    var selNodes = node.getElementsByTagName('select');
    // Check the value of the first <select> child of the <form> (which was passed as node)
    if (selNodes[0].value == 'none'){
      alert("Select Login Time!\r\n");
      return false;
    }
    else return true;
}

注: PHP ループでは、id 属性を複製しています。<select>これは許可されていません。id 属性は一意である必要があります。を追加できます$formcount

echo '
<form name="update'.$formcount.'" method="post" onsubmit="return CheckUpdate(this);">
<select name="login_time" id="login_time' . $formcount . '">
...;
于 2012-11-05T19:18:32.320 に答える
0

これを試して

<form name="update'.$formcount.'" id="update'.$formcount.'" method="post" onsubmit="return CheckUpdate(this);">

function CheckUpdate(form){
    if(document.form.login_time.value == 0){
    alert("Select Login Time!\r\n");
    return false;
    }
    else
    return true;
}
于 2012-11-05T19:18:55.610 に答える