javascript
  • jquery
  • forms
  • dynamic
  • 2009-06-02 103 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

    相關問題