Jquery动态添加表单字段问题

时间:2009-06-02 08:17:46

标签: javascript jquery forms dynamic

我正在使用以下代码插入额外的表单字段。

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 个答案:

答案 0 :(得分:2)

您的代码不适用于动态添加的输入的原因是因为当您执行以下操作时:

$(selector).blur(myFunction);

jQuery遍历每个匹配selector 的元素并添加一个事件处理程序,当myFunction事件被触发时,该事件处理程序运行blur元件。这意味着在这行代码运行之后添加selector匹配的任何元素都不会被绑定。

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

  

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

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

您的选择是:

A)每次添加新输入时都运行绑定代码 B)使用livequery插件,live基于该插件并支持模糊。

就个人而言,我会选择A。

答案 1 :(得分:0)

您应该使用live()方法绑定事件:

例如:

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

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

编辑:正如评论中指出的那样,“模糊”不受支持,但有一个支持此事件的插件:http://plugins.jquery.com/project/livequery