目前在php中选择了组合框

时间:2012-12-13 22:47:13

标签: php javascript mysql

我有一个与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();
}

我面临的问题是,如果我将自己限制为生成的第一条记录,则会发送电子邮件。如果我选择任何其他记录及其相应的组合框,我会收到邮件发送的通知,但是在排除故障时我发现电子邮件地址没有传递任何值。在我看来,代码无法检测选择了哪个组合框。

请帮忙!

此致

巴布

1 个答案:

答案 0 :(得分: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();