html - 单选按钮不提交与数字字段存在
问题描述
我正在尝试创建一个简单的 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>
解决方案
您的数字字段amount
与复选框具有相同的名称。将数字字段的名称更改为唯一的名称。
<input name="othername" type="number">
编辑
我添加了一些 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>
推荐阅读
- c# - 将值插入外键记录
- javascript - Ionic cordova 按钮在 IOS 模拟器中不可点击
- scala - 如何使用 Spark/Scala 在窗口上做 approxQuantile?
- java - 如何将字符串与另一个字符串进行比较并获取索引?
- javascript - useSelector 中的“减少”
- typescript - 有什么方法可以用 Typescript 中的新成员进行递归部分
- android - kotlin string 有没有像 Objc static NSString kUrl = @"users/%@/profile"; 这样的程序员?
- javascript - 如何让我的 Javascript“动画”更好地工作?
- javascript - getDisplayMedia“无法启动音频源”
- mysql - SELECT … FOR UPDATE 对不存在的行