2012-01-26 133 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); 
});