2010-05-25 90 views
0

我有一個我想用來添加條目的表單。添加一個條目後,應重置原始表單以準備下一個條目,並且保存的表單應在重置之前複製並附加到「storedEntries」的div上。這很多工作(大部分),但我無法訪問新創建的表單...我需要將提交按鈕的值屬性從'添加'更改爲'編輯',所以正確溝通什麼點擊該按鈕應該做。我的繼承人形式:使用jQuery的一百個不同的選擇無濟於事我在使用jQuery遍歷新添加的DOM元素時遇到了問題

<div class="newTruck"> 
    <form id="addNewTruck" class='updateschedule' action="javascript:sub(sTime.value, eTime.value, lat.value, lng.value, street.value);"> 

     <b style="color:green;">Opening at: </b> 
      <input id="sTime" name="sTime" title="Opening time" value="Click to set opening time" class="datetimepicker"/> 

     <b style="color:red;">Closing at: </b> 
      <input id="eTime" name= "eTime" title="Closing time" value="Click to set closing time" class="datetimepicker"/> 

     <label for='street'>Address</label> 
      <input type='text' name='street' id='street' class='text' autocomplete='off'/> 
      <input id='submit' class='submit' style="cursor: pointer; cursor: hand;" type="submit" value='Add new stop'/> 
     <div id='suggests' class='auto_complete' style='display:none'></div> 
      <input type='hidden' name='lat' id='lat'/> 
      <input type='hidden' name='lng' id='lng'/> 

    </form> 

</div> 

我用盡...繼承人我的腳本,因爲它代表:

function cloneAndClear(){ 
    var id = name+now; 
    $j("#addNewTruck").clone(true).attr("id",id).appendTo(".scheduledTrucks"); 
    $j('#'+id).filter('#submit').attr('value', 'Edit'); 

    $j("#addNewTruck")[0].reset(); 

    createPickers(); 
} 

元素被正確克隆,並插入到DIV ,但我無法找到一種方法來訪問這個元素......腳本中的第三行從來沒有工作。

我遇到的另一個問題是,克隆形式中的'值'恢復爲html源代碼中的值,而不是用戶輸入的值。

有關如何解決這些問題的建議非常感謝!

+0

我不完全清楚你在用第三行代碼做什麼。意圖是什麼? – 2010-05-25 05:09:27

+0

另外,變量'name'和'now'的值是什麼? – 2010-05-25 05:10:13

+0

第三行的意圖是將輸入按鈕的值從「添加新卡車」更改爲「編輯」。我能夠通過將第一行更改爲: $ j(「#addNewTruck」)。clone(true).attr(「id」,id).appendTo(「。scheduledTrucks」)。children('提交')。attr('value','編輯') 'now'是當前時間(new Date()),'name'現在是基本的文本字符串,它只是用戶的佔位符帳戶名稱,我將在jsp – 2010-05-25 05:21:55

回答

4

我想你想使用findfilter

$j('#'+id).find('#submit') 

這應該在實際工作中,雖然你,因爲有與多個元素得到了有問題相同的ID。我會改變你的HTML使用類,或在這種特殊情況下,你不需要:

$j('#' + id).find(":submit") 
1

您是否嘗試過使用.val()?而不是.filter(),使用.find()

$j('#'+id).find(':submit').val('Edit'); 
+0

這樣做的工作,謝謝。 – 2010-05-25 05:33:15

0

nickf解決方案的作品。 (只寫了一段代碼來檢查)。在jquery文檔中檢查過濾器的定義。

將匹配元素的集合減少爲匹配選擇器或通過函數測試的元素。

你在這種情況下使用find。另外正如尼克提到的,具有相同ID的多個元素很麻煩,特別是當你在做dom操作時。最好去適當的班級。