我有一个与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();
}
我面临的问题是,如果我将自己限制为生成的第一条记录,则会发送电子邮件。如果我选择任何其他记录及其相应的组合框,我会收到邮件发送的通知,但是在排除故障时我发现电子邮件地址没有传递任何值。在我看来,代码无法检测选择了哪个组合框。
请帮忙!
此致
巴布
答案 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();