タイトルがわかりにくい場合は申し訳ありません。使用している配列を正確に説明する方法がわかりません。ユーザーがケースでプロバイダーの数を選択できるように、単純な 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 であることを示します (したがって、ドロップダウン ボックス内のすべて)。強調表示すると、ドロップダウン全体が強調表示されず、最初のドロップダウンのみが強調表示されます。ここで何が起こっているのですか?事前に助けてくれてありがとう。