Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript一个表单中的两个提交按钮几乎完成_Javascript_Ajax_Forms_Onclick - Fatal编程技术网

Javascript一个表单中的两个提交按钮几乎完成

Javascript一个表单中的两个提交按钮几乎完成,javascript,ajax,forms,onclick,Javascript,Ajax,Forms,Onclick,我有一个带有两个提交按钮的表单,其中附加了onClick事件。表单操作是paypal表单 如果按下“付款”按钮,表单将通过电子邮件发送,然后重定向到paypal进行付款 如果按下发票按钮,将发送一封包含表单详细信息的电子邮件,但会停止重定向到PayPal的默认操作 这一切似乎都很好,但当按下发票按钮时,它仍然会重定向到贝宝 如果按下发票按钮,我希望它发送电子邮件,但随后停止,而不是继续表单操作 <form action="https://www.paypal.com/cgi-bin/web

我有一个带有两个提交按钮的表单,其中附加了onClick事件。表单操作是paypal表单

如果按下“付款”按钮,表单将通过电子邮件发送,然后重定向到paypal进行付款

如果按下发票按钮,将发送一封包含表单详细信息的电子邮件,但会停止重定向到PayPal的默认操作

这一切似乎都很好,但当按下发票按钮时,它仍然会重定向到贝宝

如果按下发票按钮,我希望它发送电子邮件,但随后停止,而不是继续表单操作

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" id="paymentform" name="paymentform">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="currency_code" value="GBP">
<fieldset id="your_details" class="">
 <legend>Your Details</legend>
 <ol>
  <li><label for="your_name">Your Name</label><input type="text" name="your_name" value="" id="your_name" class="large "></li>
  <li><label for="your_position">Your Position</label><input type="text" name="your_position" value="" id="your_position" class="large"></li>
  <li><label for="your_company">Your Company</label><input type="text" name="your_company" value="" id="your_company" class="large "></li>
  <li><label for="your_telephone">Your Telephone</label><input type="text" name="your_telephone" value="" id="your_telephone" class="medium "></li>
  <li><label for="your_mobile">Your Mobile</label><input type="text" name="your_mobile" value="" id="your_mobile" class="medium"></li>
 </ol>
</fieldset>
<input type="submit" value="Pay by Credit Card &rarr;" id="cc" onclick="return email_me(document.paymentform);" class="submit_button">
<input type="submit" value="Pay by Invoice &rarr;" id="invoice" class="submit_button" onclick="return email_me(document.paymentform,true);">

你的细节
  • 你的名字
  • 你的位置
  • 贵公司
  • 你的电话
  • 你的手机
  • var-xmlHttp;
    var-formname;
    var发票仅适用于
    功能电子邮件(仅表格、发票)
    {
    formname=Form.name;
    var params=“”;
    var i;
    var元素;
    var类型;
    变量名;
    var字段值;
    var可选;
    var BadFields=“”;
    var标题;
    var Titles=新数组();
    标题['item_name']=“课程标题”;
    var outMessage=“”;
    invoiceonly_var=invoiceonly;
    //警报(formname);
    //警报(形式、长度);
    var Optional=新数组();
    //可选字段
    可选['your_position']=true;
    可选['your_mobile']=true;
    对于(i=0;i
    是否尝试在不想提交的onclick事件末尾添加“return false”

    或者,您可以将类型从“提交”更改为“按钮”-这可能会起到作用。

    您是否尝试在不想提交的onclick事件末尾添加“return false”


    或者您可以将类型从“submit”更改为“button”,这可能会起到作用。

    通常我建议在您想要运行的Javascript之后添加“return false”,但由于您已经返回了一个值,我不确定这是否行得通。但是,试一试,如果它不起作用,我能问一下返回值在做什么吗

    大概是这样的:

    <input type="submit" value="Pay by Invoice &rarr;" id="invoice" class="submit_button" onclick="return email_me(document.paymentform,true);return false">
    

    通常我会建议在要运行的Javascript之后添加“return false”,但由于您已经返回了一个值,我不确定这是否有效。但是,试一试,如果它不起作用,我能问一下返回值在做什么吗

    大概是这样的:

    <input type="submit" value="Pay by Invoice &rarr;" id="invoice" class="submit_button" onclick="return email_me(document.paymentform,true);return false">
    

    首先,通过使用来抽象大部分AJAX逻辑,您的代码可以大大简化

    其次,在
    email\u me
    功能的底部有
    return true
    -尝试将其更改为:

    return !invoiceonly;
    
    从该函数返回
    false
    将阻止表单提交。单击发票按钮时(并且
    invoiceonly
    参数设置为
    true
    ),您不希望表单提交,因此上述逻辑