【问题标题】:Radio Buttons Don't Submit with Number Field Present单选按钮不提交与数字字段存在
【发布时间】:2019-11-01 14:21:31
【问题描述】:

我正在尝试创建一个简单的 Web 表单,该表单由几个复选框按钮和一个数字字段组成。它是通过一个按钮提交的。由于某种原因,当数字输入框出现时,表单将提交 0.00。如果我在数字字段中输入一些内容,它将传递我输入的任何内容,但如果我选择其中一个数字并将输入字段留空,它会提交 0.00。我似乎无法弄清楚为什么。

如果我删除代码,一切正常。

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="paypal">
      <div class="donation_container">
        <input name="cmd" type="hidden" value="_donations"> 
        <input name="business" type="hidden" value="info@***.org"> 
        <input name="item_name" type="hidden" value="Donation">
        <input name="no_shipping" type="hidden" value="1"> 
        <input name="no_note" type="hidden" value="1"> 
        <input name="currency_code" type="hidden" value="USD"> 
        <input name="tax" type="hidden" value="0.00"> 
        <input name="lc" type="hidden" value="US"> 
        <input name="bn" type="hidden" value="PP-DonationsBF"> 
        <div class="donate_call_to_action">
          <div class="donate_call_to_action_text">Become ***
          </div>
        </div>
        <div class="donation_buttons">
          <label class="donation_label"> 
            <input name="amount" type="checkbox" value="1000.00">
            <div>$1000</div>
          </label>
          <label class="donation_label">
            <input name="amount" type="checkbox" value="500.00">
            <div>$500</div>
          </label>
          <label class="donation_label">
            <input name="amount" type="checkbox" value="100.00">
            <div>$100</div>
          </label>
          <label class="donation_label">
            <input name="amount" type="checkbox" value="50.00">
            <div>$50</div>
          </label>
          <div class="custom_donation">
            <i>$</i>
            <input name="amount" type="number">
          </div>
        </div>
      </div>
      <div class="donation_button">
        <button type="submit" formmethod="post" class="btn btn-primary" alt="PayPal - The safer, easier way to pay online!" name="submit">Donate</button> 
        <img src="https://www.paypal.com/en_US/i/scr/pixel.gif" alt="" width="1" height="1" border="0">
      </div>
    </form>

更新:

事实证明,我只能提交一次具有 name=amount 属性的值。输入 type=number 字段和复选框会导致捐赠按钮提交多个“金额”。即使输入框是空的,它也会提交一个空值,例如amount=50.00&amount= 解决方法是一个小jQuery,关闭输入字段的name属性。如果输入字段为 0 或值的长度为 0,则脚本将去掉 name 属性。

<script>
      (function ($) {
        $(document).ready(function() {
          	$( "form" ).submit(function( event ) {
    			    alert($(this).serialize());
    			    event.preventDefault();
  			    });
        });
        $("#other_amount").removeAttr("name"); //on load, remove the name attribute. Default action.
        $( "#other_amount" ).blur(function() {
        	if(($(this).val().length == "0") || ($(this).val() == "0")){
          		$(this).removeAttr("name");
            } else {
            	$(this).attr("name", "amount");
            }
        });
      })(jQuery);
</script>

【问题讨论】:

    标签: html forms checkbox input paypal


    【解决方案1】:

    您的号码字段与复选​​框具有相同的amount 名称。将数字字段的名称更改为唯一名称。

    &lt;input name="othername" type="number"&gt;


    编辑

    我添加了一些 jquery,因此您可以看到它正在提交复选框和数字字段值。您提供的代码中一定有其他未显示的内容。

    $(document).ready(function() {
       $( "form" ).submit(function( event ) {
        alert($(this).serialize());
        event.preventDefault();
      });
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="paypal">
      <div class="donation_container">
        <input name="cmd" type="hidden" value="_donations"> 
        <input name="business" type="hidden" value="info@***.org"> 
        <input name="item_name" type="hidden" value="Donation">
        <input name="no_shipping" type="hidden" value="1"> 
        <input name="no_note" type="hidden" value="1"> 
        <input name="currency_code" type="hidden" value="USD"> 
        <input name="tax" type="hidden" value="0.00"> 
        <input name="lc" type="hidden" value="US"> 
        <input name="bn" type="hidden" value="PP-DonationsBF"> 
        <div class="donate_call_to_action">
          <div class="donate_call_to_action_text">Become ***
          </div>
        </div>
        <div class="donation_buttons">
          <label class="donation_label"> 
            <input name="amount" type="checkbox" value="1000.00">
            <div>$1000</div>
          </label>
          <label class="donation_label">
            <input name="amount" type="checkbox" value="500.00">
            <div>$500</div>
          </label>
          <label class="donation_label">
            <input name="amount" type="checkbox" value="100.00">
            <div>$100</div>
          </label>
          <label class="donation_label">
            <input name="amount" type="checkbox" value="50.00">
            <div>$50</div>
          </label>
          <div class="custom_donation">
            <i>$</i>
            <input name="other_amount" type="number">
          </div>
        </div>
      </div>
      <div class="donation_button">
        <button type="submit" formmethod="post" class="btn btn-primary" alt="PayPal - The safer, easier way to pay online!" name="submit">Donate</button> 
        <img src="https://www.paypal.com/en_US/i/scr/pixel.gif" alt="" width="1" height="1" border="0">
      </div>
    </form>

    【讨论】:

    • 感谢您的回复。我将名称更改为“custom_amount”。现在按钮传输了正确的金额,但输入字段没有发送任何内容。
    • @talkinggoat 我已经更新了我的答案以表明它应该提交所有数据。您的完整代码肯定有其他问题。
    • 这里发生了两件事。 1.) PayPal 显然需要 'name="amount"' 来提交金额,因此自定义金额字段必须包含该金额,以及用于告知 PayPal 金额的复选框。 2.) 当一个复选框被选中时,它也会提交输入表单,在警告框中产生输出 amount=50.00&amount=。因此,使用复选框时会出现 0.00 美元的问题。
    • 您将不得不创建一个隐藏的 ammout 字段并使用 javascript 使用选中的复选框或自定义值填充它。
    猜你喜欢
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    • 2012-08-07
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多