创建动态表单并使用jQuery处理提交

时间:2017-03-07 04:58:01

标签: jquery

我的页面上有这个脚本

    $('.konfirmtoko').submit(function(e){
        e.preventDefault();
        alert("Test");
    })

    $('.kliknomor').click(function(){

        var isitabel = [];
        $.get('getdata', function (data){
            var data = $.parseJSON(data);

            $.each(data, function(i, item){
                var forbutton = [$('<input>').attr({type: 'hidden', name: 'hiddenvalue', value: item.somevalue}),
                                 $('<button>').text("Konfirmasi")];
                forbutton = $('<form>').attr({
                                action: 'formsubmit',
                                class: 'konfirmtoko'
                            }).append(forbutton);
                isitabel.push(forbutton);
            });
            $('.isitabelview').empty();
            $('.isitabelview').append(isitabel);
        });
    })

当我单击带有'kliknomor'类的按钮时,它会显示一些带有'konfirmtoko'类的表单以及每个表单的单个按钮。我希望表单提交也使用jQuery处理。但是,我的脚本的前四行从未被调用过。有没有我错过的东西?

修改 我在一些表单提交上做了成功,它显示了页面加载时的表单(使用php生成的表单)。此表单使用jquery生成。

2 个答案:

答案 0 :(得分:1)

我认为这是因为您的var clickedOnScrollbar = function(mouseX) { if( $(window).outerWidth() <= mouseX ){ return true; } } $(document).mousedown(function(e){ var isRightMB; e = e || window.event; if ("which" in e) isRightMB = e.which == 3; else if ("button" in e) isRightMB = e.button == 2; if(isRightMB){ if( clickedOnScrollbar(e.clientX) ){ alert("Right click is not allowed"); } } }); 表格在初始页面加载时尚未提供,因此您可以为尚未提供的内容提供事件监听器。我尝试在您的循环中的表单的.konfirmtoko属性中添加preventDefault以及该作品。以下是我修改过的代码:

onsubmit

注意:我还为循环生成的每个表添加id,只是为了使它们彼此唯一,以防你需要这些表为其他目的而变得独一无二

答案 1 :(得分:0)

有两种方法可以解决您的问题:

1)您可以使用.delegate()方法进行表单提交,如下所示:

$( ".isitabelview" ).delegate( ".konfirmtoko", "submit", function(e) {
        e.preventDefault();
        alert("Test 1");
});

2)如果上面的解决方案不起作用,那么你可以在.get()方法中编写你的提交函数。如下所示:

$('.kliknomor').click(function(){

        var isitabel = [];
        $.get('getdata', function (data){
            var data = $.parseJSON(data);

            $.each(data, function(i, item){
                var forbutton = [$('<input>').attr({type: 'hidden', name: 'hiddenvalue', value: item.somevalue}),
                                 $('<button>').text("Konfirmasi")];
                forbutton = $('<form>').attr({
                                action: 'formsubmit',
                                class: 'konfirmtoko'
                            }).append(forbutton);
                isitabel.push(forbutton);

                var formEvent= '$( ".isitabelview" ).delegate( ".konfirmtoko", "submit", function(e) {';
                        formEvent += 'e.preventDefault();';
                        formEvent += 'alert("Test 1");';
                        formEvent += '});';
                isitabel.push(formEvent);

            });
            $('.isitabelview').empty();
            $('.isitabelview').append(isitabel);
        });
    })