javascript - 不能两次更改元素的类型?
问题描述
我依赖于另一个插件 javascript,它具有特定提交事件的代码,该事件在经过一些验证后提交表单。
如果不侵入该代码,我将无法更改该验证。
因此,我想出了一个没有破解插件代码的破解方法。我正在将输入类型从提交更改为按钮类型,这样我就可以进行自己的验证,而不必考虑提交时触发的操作。
有两个带有 class 的单选按钮.give-gateway
。基本上我正在这样做。
HTML(表单中的元素):
<input type="submit" class="give-submit give-btn" id="give-purchase-button"
name="give-purchase" value="Donate Now" data-before-validation-label="Donate
Now">
jQuery:
$('body').on('click', '.give-gateway', check_gateway);
function check_gateway(id) {
//Value from which radiobutton is selected
if (current_gateway == 'swish') {
alert('changing button from ORIGINAL to new. NOW IT SHOULD BE
TYPE BUTTON!!!');
$('#give-purchase-button').prop('id', 'give-purchase-button-
new').prop('type','button');
$('body').on('click touchend', '#give-purchase-button-new', function
(e) {
alert('NEW give purchase button clicked');
//some code...
});
}
else {
alert('changing button from NEW to original. NOW IT SHOULD BE TYPE
SUBMIT!!!');
$('#give-purchase-button-new').attr('id', 'give-purchase-
button').prop('type','submit');
}
}
这是第一次工作:
从提交到按钮
从按钮到提交
从提交到按钮
第 3 步(不工作(第一次点击 swish 网关工作,但第二次没有从提交更改为按钮)!?**为什么?)**
我还尝试以编程方式将 onsubmit 添加到表单,但问题是其他插件 jquery 代码在实际提交按钮上有一个单击事件的侦听器,这意味着无论如何都会首先执行该代码。我不希望这种情况发生。
我现在知道为什么了。当我单击另一个网关时,表单会加载其他内容。当我从 swish 转到 paypal 时。它加载依赖于贝宝的内容并创建一个新的提交按钮。如果我只是从提交类型更改为按钮,它不会影响任何内容,因为该更改是在加载实际内容之前进行的(通过 ajax),因此会创建一个新的提交按钮。
解决方案
推荐阅读
- javascript - 如何通过点击外部关闭导航栏?
- laravel - 联系表格在 laravel 5.7 中没有做任何事情,甚至没有显示任何错误
- python - numpy.pad 添加的填充是声明的两倍
- javascript - Chart.Js - 尝试更新图表时“无法读取未定义的属性‘数据集’”
- java - 如何在片段之间正确地向前和向后切换?
- rust - 用于更大切片的 IntoIterator
- python - Django Messages Framawork 未显示索引
- amazon-web-services - 多个 ALB 上的单个 AWS WAF
- excel - excel vba自动筛选
- r - R Markdown pdf_document - 没有页眉的页脚