无法两次更改元素的类型?

时间:2018-10-04 18:47:12

标签: javascript jquery

我依赖于另一个具有相应特定事件代码的插件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'); 
        }
    }

这是第一次:

  1. 从“提交到”按钮

  2. 从按钮到提交

  3. 从“提交到按钮”

第3步(不起作用(第一次单击swish网关工作,但是第二次它没有从提交更改为按钮)!?**为什么?)**

我也尝试过以编程方式将onsubmit添加到表单中,但是问题是,其他插件jquery代码在实际的commit-按钮上有一个click事件的侦听器,这意味着该代码无论如何都首先执行。我不希望那样发生。

我已经弄清楚了为什么。当我单击另一个网关时,该表单会加载其他内容。当我从sw到支付宝时。它加载依赖于贝宝东西的内容,并创建一个新的“提交”按钮。如果我只是将类型从Submit更改为button,则不会有任何影响,因为所做的更改是在加载实际内容之前(通过ajax)并因此创建了一个新的Submit按钮。

0 个答案:

没有答案