href / button单击否决下一步并执行操作而不等待用户输入

时间:2015-06-29 02:15:36

标签: javascript php jquery html

冗长(对不起)问题描述:我有一个表格,每行都有用户信息,还有一些链接要发送,例如提醒电子邮件,以便进行问卷调查或邀请。

点击第一次的任何链接/按钮,打开一个(jquery)对话框,显示包含电子邮件内容,主题行和电子邮件地址以及几个按钮的表单:发送,取消等 - 这是为了确保内容正确,是正确的人等。

当我选择"发送提醒"表单执行它应该做的事情,将电子邮件发送给该行中的人。

点击另一个链接,它会自动发送电子邮件,而不是等待我按下任何按钮,它会将电子邮件窗口中显示的(ajax)成功消息作为内容发送。

我一遍又一遍地阅读代码,我无法弄清楚为什么会这样,我需要你的帮助!

该表基于php,tablesorter,jquery和javascript,并且一行看起来像这样(有两个href和按钮做同样的事情,我试过两个 - 都做错了同样的事情)

<tr class="odd">
 <td>jobst4</td>
 <td>exmpl4@domain.com</td>
 <td><a href="javascript://" onclick="SendEmail('remind','jobst4');return false;" title="Send email to 'jobst4' with type 'remind'">Send</a><input role="button" class="button button_remind ui-button ui-widget ui-state-default ui-corner-all" value="Send" onclick="SendEmail('remind','jobst4');return false;" type="button"></td>
</tr>

上面的行重复使用不同的值,传递给SendEmail的参数将设置电子邮件jquery拨号框中显示的内容。

php脚本中的对话框如下所示:

...
$RetVal .= "<div id=\"dialog\"  title=\"Message Dialog Box\" style=\"display:none;z-index:3000;\"></div>";
...
echo $RetVal;
...

在jquery对话框中显示的表单:

  ...
  $RetVal  = "Edit the content of the email message and press submit.";
  $RetVal .= "<hr>";
  $RetVal .= "<form id=\"MailForm\" name=\"MailForm\" method=\"POST\" \">";
  $RetVal .= "<table style='width:800px;'>";
  $RetVal .= "<tr><td align=right>FROM:</td><td><input size=80 type=text name=\"from\" value=\"".$EmailFrom."\"></td></tr>";
  $RetVal .= "<tr><td align=right>TO:</td><td><input size=80 type=text name=\"address\" value=\"".$userData['firstname']." ".$userData['lastname']." <".$userData['email'].">\"></td></tr>";
  $RetVal .= "<tr><td align=right>CC:</td><td><input size=80 type=text name=\"cc\" value=\"\"></td></tr>";
  $RetVal .= "<tr><td align=right>BCC:</td><td><input size=80 type=text name=\"bcc\" value=\"".$EmailBcc."\"></td></tr>";
  $RetVal .= "<tr><td align=right>SUBJECT:</td><td><input size = 100 type=text name=\"subject\" value=\"".$subject."\"></td></tr>";
  $RetVal .= "<tr><td colspan=2><textarea id='mailbody' name='mailbody'>".$content."</textarea></td></tr>";
  $RetVal .= "<tr><td colspan=2>";
  $RetVal .= "<input type=\"button\" value=\"Email\" onClick=\"SendEmail();jQuery('#dialog').dialog('close');return false;\"> &nbsp;&nbsp;<input type=\"button\" value=\"Close Me\" onClick=\"jQuery('#dialog').dialog('close');return false
;\">";
  $RetVal .= "</td></tr>";
  $RetVal .= "</table></form>";
  ...
  echo $RetVal;

点击链接/按钮时执行的javascript:

$RetVal .= "<script language=\"javascript\">
function SendEmail()
{
 console.log('function SendEmail');
 $.ajax({
  type: 'POST',
  url: 'THE_SCRIPT_THAT_DOES_THE_MAILING.php',
  data: $('#MailForm').serialize(),
  success: function(data)
  {
   console.log('success1');
   if(data.status=='success')
   {
    console.log('success2');
    console.log(data.content);
    $('#mailbody').html(data.content);
   }
   else
   {
    console.log('darn!');
    $('#mailbody').html('<h1>ERROR</h1>'+data.content);
   }
  },
  error: function(jqXHR,exception)
  {
    console.log('There was an error executing this(2): '+jqXHR.status+' '+jqXHR.responseText+' - '+exception);
  }
 });
}
</script>
";

即使按下(血腥)关闭也会再次发送电子邮件。

我做错了什么或看不到什么?

帮助!

1 个答案:

答案 0 :(得分:0)

这可能对您有所帮助

  1. 从。

  2. 中移除onclick事件
  3. put href =“javascript:SendEmail('remind','jobst4');” in。