0

タイトルがわかりにくい場合は申し訳ありません。使用している配列を正確に説明する方法がわかりません。ユーザーがケースでプロバイダーの数を選択できるように、単純な ajax を使用しています。これにより、正しい数のドロップダウン ボックスが表示されます。基本的に、ドロップ ダウンはこの php/html コードで作成されます。ここで、q はユーザーが選択したプロバイダーの数です。

for ($i=1; $i<=(intval($q)); $i++)
{
    echo "Name of Anesthesia Provider " . $i . ": ";
    echo "<select name=\"anesthesiaprovider[]\">";
    $result = mysqli_query($con,"SELECT * FROM Anesthesia_Provider ORDER BY Lname");
    if (!(mysqli_query($con, $sql))) {
        echo "<br>";
        echo 'Error in inserting data: ' . mysqli_error($con);
    }

    echo "<option name=\"anesthesiaprovider[]\" value=\"selectprovider\">Anesthesia Provider " . $i . "</option>";

    while($row = mysqli_fetch_array($result))
    {
        echo "<option name=\"reviewer\" value=\"" . $row['Anesthesia_Provider_Number'] . "\">" . $row['Lname'] . ", " . $row['Fname'] . "</option>";
    }   
    echo "</select>";
    echo "<br>";
    echo "<br>";
}

各ボックスに対してプロバイダーが選択されていることを確認するために、javascript を使用したいと考えています。選択されていない場合は、黄色で強調表示します。これは私の JavaScript コードです。送信時にフォームを検証します。

function validateQualityReport(theForm)
{
    var reason = "";
    reason += validateCase(theForm.case);
    reason += validateAnesthesiologists(theForm.element['anesthesiaprovider[]'])

    if (reason != "") {
        alert("Some fields need correction:\n" + reason);
        return false;
    }
    alert("All fields are filled correctly");
    return false;
}

function validateAnesthesiologists(fld){
    var error = "";
    alert(fld.length);
    for (var i = 0; i < fld.length; i++) {
        if (fld[i].value =="selectprovider"){
            fld[i].style.background = 'Yellow';
            error += "Make a selection for provider " + (i+1).toString() + "\n";
        }else{
            fld[i].style.background = 'White';
        }
    }
    return error;
}

このコードは、プロバイダーが 1 つ選択されている場合を除き、すべてに対して機能します。次に、 fld.length が 56 であることを示します (したがって、ドロップダウン ボックス内のすべて)。強調表示すると、ドロップダウン全体が強調表示されず、最初のドロップダウンのみが強調表示されます。ここで何が起こっているのですか?事前に助けてくれてありがとう。

4

2 に答える 2