2012-01-26 167 views
0

有麻煩jQuery來訪問父窗體域「當從命名inputStartMonth使用jQuery輸入名稱

有什麼奇怪的選擇字段中選擇新值inputStart的價值訪問父元素是相似的語法上的工作在別處同一網站。我使用輸入的名稱和類,因爲我在同一頁面上多次重複相同的表單(使用不同的ID)。

任何建議將不勝感激。

下面是jQuery代碼:

$('input[name=inputStartMonth]').change(function() { 
var month = $(this).val(); 
$(this).parent().find('input[name=inputStart]').val(month); 
}); 

部分HTML:

<td><input name="inputStart" type="text" autocomplete="off" value="May '96"> 
<div class="startDateDrop hideThis dropForm"> 
<select name="inputStartMonth"> 

回答

0

你有幾個問題。其一,正如其他人所提到的,你選擇的父母是一個div,它不是你輸入的父母。其次,您的選擇器使用$('input [name = inputStartMonth]'),它應該是「select」而不是輸入。請參閱:http://jsfiddle.net/sYFuY/

+0

非常感謝。我曾嘗試使用select作爲輸入,但是這並不能解決任何問題 - 最接近的命令看起來會非常有幫助。感謝這個例子。 – jsuissa 2012-01-27 01:38:47

0

屬性選擇應該被引用:

$('input[name="inputStartMonth"]')... 
0

要查找的元素,您似乎在尋找,其中不是以任何方式爲的父項你從開始元,我建議:

$(this).parent().prev('input[name="inputStart"]').val(month); 

另外,根據該屬性等於API文檔(attribute="value"])選擇引述值是強制性的。

參考文獻:

+0

謝謝 - 只是嘗試將此作爲替代解決方案 - 它看起來和上面的jQuery最接近的示例一樣。 – jsuissa 2012-01-27 01:40:34

0

您的部分html意味着select的父親不是輸入的祖先,這意味着find將永遠找不到它。嘗試

$(this).closest('form').find('input[name=inputStart]').val(month); 

此外,您在輸入名字inputStartMonth,不存在檢測change。你想要:

$('select[name=inputStartMonth]').change(function() { 
    var month = $(this).val(); 
    $(this).closest('form').find('input[name=inputStart]').val(month); 
});