javascript
  • jquery
  • forms
  • dynamic
  • 2009-06-02 88 views 0 likes 
    0

    我正在使用下面的代码来插入额外的表单域。jquery动态添加表单域问题

    function addFormField() { 
    $("#divTxt").append("<div id='education" + id + "'><input name='name' id='name' type='text' size='20'><a href='#' onClick='removeFormField(\"#education" + id + "\"); return false;'><img src='images/minus.gif' width='10px' border=0></img></a></div>"); 
    } 
    

    我在发生模糊事件时动态地将字段值发送到mysql。但是,当插入此字段时,它将无法识别,并且在新字段中输入任何值时,模糊事件不会拾取。这是由于原始模糊事件处理程序在文档准备好时设置的吗?

    如何获取mysql更新jquery代码来识别文档就绪初始化完成后额外表单域是否可见?我试过基础上,DIV ID,但无济于事各种活动.....

    回答

    2

    你的代码是不是动态添加的输入工作的原因是因为当你做这样的事情:

    $(selector).blur(myFunction); 
    

    jQuery的经过每一个selector在这一点上匹配,并增加了运行myFunctionblur触发事件发生在元素上的事件处理程序的元素。这意味着任何匹配selector的元素在之后加这行代码将不会被绑定。

    为了解决这个问题,jQuery在1.3中引入了live函数。正如文档所示:

    为所有当前和将来匹配的元素绑定事件处理程序(如点击)。也可以绑定自定义事件。

    不幸的是,截至目前,jQuery不支持blur事件和live函数。

    你的选项则是:

    A)运行的绑定代码每次你添加新的投入。
    B)使用livequery插件,这是live基于并支持模糊。

    就个人而言,我会答

    0

    你应该使用实况()方法绑定你的事件:

    例如:

    $("input").live("blur", function() { ... }); 
    

    这样,在运行时添加的任何字段都将绑定到事件处理程序。

    编辑:正如在评论中指出,“模糊”,不支持,但有确实支持本次活动的一个插件:http://plugins.jquery.com/project/livequery

    +1

    模糊走不支持直播():http://docs.jquery.com/Events/live#typefn – 2009-06-02 08:22:29

    +0

    你说得对。错过了... – 2009-06-02 08:28:03

    相关问题