Javascript event.preventDefault(); 即使使用委托事件也不起作用

Eimantas

我想防止默认表单在动态生成的表单上的提交行为,但是event.preventDefault(); 即使使用委托事件(.on)也无法使用。这是我的js代码:

$(document).ready(function() {
$("#add").click(function() {
    var intId = $("#buildyourform div").length + 1;
    var fieldWrapper = $("<div class=\"fieldwrapper\" id=\"field" + intId + "\"/><br>");
    // I am adding 2 new forms there:
    var topic = $( '<form action = "#" method = "POST" name="new_topic" id="new_topic">'+ document.getElementById('csrf_token').value +
                  '<textarea  name="name" maxlength="1000" cols="25" rows="6" id="new_form"></textarea></form>'+
                  '<br><input type="submit" value="Submit" class="newMygt" />');


    var summary = $('<form action = "#" method = "POST" name="new_summary" id="new_summary">'+ document.getElementById('csrf_token').value +
                    '<textarea  name="content" maxlength="1000" cols="25" rows="6" id="new_form"></textarea></form>'+
                    '<br><input type="submit" value="Submit" class="newMygt" />');


    (topic).appendTo(fieldWrapper).show('slow');
    (summary).appendTo(fieldWrapper).show('slow');
    $("#buildyourform").append(fieldWrapper);


});

// after clicking the '.newMygt' button the form subitms...
$('.fieldwrapper').on("click", ".newMygt",function(e){
    e.preventDefault();
    a = JSON.stringify($('#new_topic, #new_summary').serializeObject()); // turn that "array or smth" into JSON
    alert(a)
});

});

我知道语法看起来像这样:

$(elements).on(事件,选择器,数据,处理程序);

但是看来我在做错事,并且数据没有弹出。

编辑:正确答案:

JohnP的评论:

解决此问题-您需要绑定到绑定完成后存在的元素。您正在绑定到表单,这是不正确的。绑定到容器

$('#buildyourform').on("click", ".newMygt",function(e){
..blah blah..
约翰·P

我在此小提琴中列出了您需要修复的内容-http: //jsfiddle.net/a624W/1/

要修复的两个主要问题是

  1. 错误的标记-您在多个位置使用了相同的ID,并且某些元素没有结束标记。

  2. 绑定-您使用错误的选择器绑定到元素。即使修复选择器,绑定发生时该元素也不存在。您需要绑定到父项。

复制下面的代码。

$("#add").click(function () {
    var intId = $("#buildyourform div").length + 1;



    var fieldWrapper = $("<div class=\"fieldwrapper\" id=\"field" + intId + "\"/><br>");
    // I am adding 2 new forms there:

    /** 
FIX THIS - You use the same ID for the form. You need to make those unique. Possibly the name as well. Both forms
**/
    var topic = $('<form action = "#" method = "POST" name="new_topic" id="new_topic">' + document.getElementById('csrf_token').value +
        '<textarea  name="name" maxlength="1000" cols="25" rows="6" id="new_form"></textarea>' +
        '<br><input type="submit" value="Submit" class="newMygt" /></form>');

    var summary = $('<form action = "#" method = "POST" name="new_summary" id="new_summary">' + document.getElementById('csrf_token').value +
        '<textarea  name="content" maxlength="1000" cols="25" rows="6" id="new_form"></textarea>' +
        '<br><input type="submit" value="Submit" class="newMygt" /></form>');
    /** 
FIX THIS - Missing closing tags for both the forms
**/


    (topic).appendTo(fieldWrapper).show('slow');
    (summary).appendTo(fieldWrapper).show('slow');
    $("#buildyourform").append(fieldWrapper);


});

// after clicking the '.newMygt' button the form subitms...
/** 
FIX THIS - You need to bind to an element that exists when the binding is done. You were binding to the form, which is incorrect. Bind to the container. 
**/
$('#buildyourform').on("click", ".newMygt", function (e) {
    e.preventDefault();
    a = JSON.stringify($('#new_topic, #new_summary').serialize()); //FIX THIS - The method is serizalize()
    alert(a)
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Javascript event.preventDefault(); 即使使用委托事件也不起作用

来自分类Dev

javascript event.preventdefault()在使用Rails的jquery.click上不起作用

来自分类Dev

event.preventDefault不起作用

来自分类Dev

JavaScript onScroll event.preventDefault()

来自分类Dev

单击链接时event.preventDefault()不起作用

来自分类Dev

event.preventdefault在Firefox中不起作用

来自分类Dev

jQuery .click()event.preventDefault()不起作用

来自分类Dev

event.preventDefault(); 提交表格时不起作用

来自分类Dev

event.preventdefault在Firefox中不起作用

来自分类Dev

event.preventDefault在React中不起作用

来自分类Dev

event.preventDefault(); 提交表格时不起作用

来自分类Dev

返回false并且event.preventDefault()不起作用

来自分类Dev

event.preventDefault()在mozilla上不起作用

来自分类Dev

单击时删除event.preventDefault不起作用

来自分类Dev

event.preventDefault在Firefox中不起作用

来自分类Dev

event.preventdefault在Firefox中不起作用

来自分类Dev

event.PreventDefault(); 在嵌套的 onClick 函数中不起作用

来自分类Dev

在函数event.preventDefault()中传递事件后不起作用

来自分类Dev

RxJS:如何event.preventDefault()放置事件?

来自分类Dev

在event.preventDefault()之后复制事件

来自分类Dev

一段时间后如何使用jquery或javascript撤消event.preventdefault

来自分类Dev

一段时间后如何使用jQuery或JavaScript撤消event.preventdefault

来自分类Dev

页面仍使用event.preventDefault()重新加载;

来自分类Dev

Javascript:preventDefault()在选择标记上不起作用?

来自分类Dev

JavaScript event.preventDefault()与其他争论

来自分类Dev

event.preventDefault()或返回false在IE9中不起作用

来自分类Dev

jQuery event.preventDefault()除非进行调试,否则不起作用

来自分类Dev

jQuery event.PreventDefault在用户定义函数中不起作用

来自分类Dev

Meteor应用程序中的event.preventDefault()对Firefox不起作用?

Related 相关文章

  1. 1

    Javascript event.preventDefault(); 即使使用委托事件也不起作用

  2. 2

    javascript event.preventdefault()在使用Rails的jquery.click上不起作用

  3. 3

    event.preventDefault不起作用

  4. 4

    JavaScript onScroll event.preventDefault()

  5. 5

    单击链接时event.preventDefault()不起作用

  6. 6

    event.preventdefault在Firefox中不起作用

  7. 7

    jQuery .click()event.preventDefault()不起作用

  8. 8

    event.preventDefault(); 提交表格时不起作用

  9. 9

    event.preventdefault在Firefox中不起作用

  10. 10

    event.preventDefault在React中不起作用

  11. 11

    event.preventDefault(); 提交表格时不起作用

  12. 12

    返回false并且event.preventDefault()不起作用

  13. 13

    event.preventDefault()在mozilla上不起作用

  14. 14

    单击时删除event.preventDefault不起作用

  15. 15

    event.preventDefault在Firefox中不起作用

  16. 16

    event.preventdefault在Firefox中不起作用

  17. 17

    event.PreventDefault(); 在嵌套的 onClick 函数中不起作用

  18. 18

    在函数event.preventDefault()中传递事件后不起作用

  19. 19

    RxJS:如何event.preventDefault()放置事件?

  20. 20

    在event.preventDefault()之后复制事件

  21. 21

    一段时间后如何使用jquery或javascript撤消event.preventdefault

  22. 22

    一段时间后如何使用jQuery或JavaScript撤消event.preventdefault

  23. 23

    页面仍使用event.preventDefault()重新加载;

  24. 24

    Javascript:preventDefault()在选择标记上不起作用?

  25. 25

    JavaScript event.preventDefault()与其他争论

  26. 26

    event.preventDefault()或返回false在IE9中不起作用

  27. 27

    jQuery event.preventDefault()除非进行调试,否则不起作用

  28. 28

    jQuery event.PreventDefault在用户定义函数中不起作用

  29. 29

    Meteor应用程序中的event.preventDefault()对Firefox不起作用?

热门标签

归档