0

JavaScript関連の質問があります。ロード中に複数のコンボボックスが生成されるフォームがあります。

<select id="email_adrs" class="input-medium">
<option>-Ontvanger-</option>
<?php while ($veri = mysql_fetch_array($verwijzer)) { ?>
   <option value="<?php echo $veri['email'];?>"><?php echo $veri['aanvrager']; ?></option>
<?php 
   }
?>
</select>

送信ボタンをクリックすると、次のコードが実行されます。

<input onclick="sendmail('<?php echo $plist['patient_id']; ?>');" class="submit-green" type="submit" value="Versturen"   name="form_submit" />

sendmail関数は次のように定義されます。

function sendmail(pid)
{
    var email = document.getElementById('email_adrs').value;
    var xmlhttp1=new XMLHttpRequest();
    xmlhttp1.onreadystatechange=function()
    {
        if(xmlhttp1.readyState==4 && xmlhttp1.status==200)
        {
            MailNotification();
        }
    }
    xmlhttp1.open('GET','html2pdf/examples/email.php?id='+pid+'&email='+email,true);
    xmlhttp1.send();
}

私が直面している問題は、最初に生成されたレコードに制限すると、電子メールが送信されることです。他のレコードとそれに対応するコンボボックスを選択すると、メールが送信されたという通知が表示されますが、トラブルシューティング中に、メールアドレスに値が渡されていないことがわかりました。コードは、どのコンボボックスが選択されたかを検出できないように見えます。

助けてください!

よろしく、

バブ

4

1 に答える 1

0

入力を次のように変更する必要があります

<input onclick="sendmail(this, '<?php echo $plist['patient_id']; ?>');" class="submit-green" type="submit" value="Versturen"   name="form_submit" />

そしてあなたの機能は

function sendmail(clickedElement, pid)
{
    var formElem = clickedElement.parentElement; // (1)
    var selectElem = formElem.getElementsByTagName("select")[0]; // (2)
    var email = selectElem.value;

    /*
      [Ajax call here]
    */
}

(1):.parentElementレイアウトに応じて、フォームに到達するために必要な数だけ適用する必要があります。
(2):複数selectの要素がある場合は、配列の適切なインデックスを使用します。

JQueryを使用している場合は、次のコマンドでも同じことができます。

var email = $(clickedElement).closest("form").find("#email_adrs").val();
于 2012-12-14T21:03:24.707 に答える