我依赖于另一个具有相应特定事件代码的插件javascript,该事件在经过一些验证后提交表单。
如果不侵入该代码,我将无法更改该验证。
因此,我想出了一个破解方法,但没有破解该插件的代码。 我将输入类型从“提交”更改为“按钮”类型,因此我可以进行自己的验证,而不必考虑提交时触发的操作。
有两个类别为.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代码在实际的commit-按钮上有一个click事件的侦听器,这意味着该代码无论如何都首先执行。我不希望那样发生。
我已经弄清楚了为什么。当我单击另一个网关时,该表单会加载其他内容。当我从sw到支付宝时。它加载依赖于贝宝东西的内容,并创建一个新的“提交”按钮。如果我只是将类型从Submit更改为button,则不会有任何影响,因为所做的更改是在加载实际内容之前(通过ajax)并因此创建了一个新的Submit按钮。