2009-12-03 66 views
3

我覺得這是一個普遍的問題...但我一直沒能找到這個答案...呼叫從一個元素AJAX父頁面的功能 - 裝載到一個div

我加載當點擊一個鏈接時,使用ajax的一些文本框成一個div內的一個div ...

和在頁面的這個新添加的元素的onFocus事件期間,我必須調用父頁面中的JavaScript函數...

我的問題是......這些元素......即文本框不能在事件被觸發時調用函數.....

我的猜測是,新加載的元素不會更新到父頁面的DOM樹

我也使用jQuery的,但離開它一邊一段時間,我應該怎麼做才能讓新加入的元素onFocus將調用寫在父頁面中的函數..?

這是代碼。

<script type = "text/javascript"> 
$(document).ready(function(){ 

       // binding elements 

       $('.formContainer input[type=file]').live('change',function(){ 
        alert("hi"); // here i bind the newly added file chooser 
        uploadImage(); 
       }); 

      }); 
</script> 

的HTML是...

<div class="formContainer"> 
    <form name="frmCreateHotel" action="uploadImage.php" method="post"> 
     <table> 
      <tr> 
       <td colspan="2"> 
        <div class="elementRow"> 
         Hotel Image 
        </div> 
       </td> 

       <td> 
        <div class="elementRow" style="height:100px"> 
         <input name="imageToUpload" 
           id="imageToUpload" 
           type="file" 
           size="30" 
           class="imageSelector"/> // the function should be called during this elements onchange 

         <input name="oldImageToDelete" 
           id="oldImageToDelete" 
           type="hidden" size="50" /> 

         <input type="hidden" name="MAX_FILE_SIZE" 
           value="2000000" /> 

         <input name="imageDescription" 
           id="imageDescription" 
           type="hidden" /> 

         <div class="toolTip image"> 

           <iframe id="uploadedImage" 
             name="uploadedImage" 
             src="" 
             style="width:160px; height:160px;" 
             frameborder="0" 
             marginheight="0" 
             marginwidth="0"></iframe> 
         </div> 

        </div> 
       </td> 
      </tr> 

     </table> 
</div> 

當文件路徑轉換功能應該叫...

希望我清楚..

感謝和問候....

回答

1

製造它最終工作...

我用jQuery的AJAX功能加載HTML元素和使用的document.getElementById()來獲取參考elemnts ...

就像一個魅力。 ... !!!

0

如果你有jQuery,那麼你可以這樣做:

function ajaxCallback() { 
    /* create text boxes */ 
    $('text box selector').bind('focus', functionName); 
} 

查看jQuery bind瞭解更多信息。你可能想考慮使用jQuery將文本框放入div。然後,您不必擔心動態元素是否已正確插入到DOM中。

+0

我不認爲這會將事件綁定到加載到DOM中的未來元素。 – rahul 2009-12-03 05:56:43

+0

謝謝.. 檢查綁定是否可以與onchange事件一起工作 – SpikETidE 2009-12-03 06:01:18

+0

Adamantium是正確的...綁定不會在新添加的元素上工作....這就是Live()用於...但live()目前不支持onChange .... 我認爲這排除了jquery .... ?? – SpikETidE 2009-12-03 06:40:06