使用jQuery输入名称访问父元素

时间:2012-01-26 23:52:00

标签: 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">

4 个答案:

答案 0 :(得分:0)

应引用属性选择器:

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

答案 1 :(得分:0)

要找到您正在寻找的元素,不是以任何方式成为您开始的select元素的父元素,我建议:< / p>

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

此外,根据属性等于(attribute="value"])选择器的API文档,引用该值是必需的。

参考文献:

答案 2 :(得分:0)

您的部分html意味着select的父级不是输入的祖先,这意味着find永远不会找到它。尝试

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

此外,您正在检测名称为change的输入上的inputStartMonth,该输入不存在。你想要:

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

答案 3 :(得分:0)

你有几个问题。其中一个,正如其他人所提到的,你的select的父级是div,它不是你输入的父级。其次,你的选择器使用$('input [name = inputStartMonth]')它应该是“select”而不是输入。请参阅:http://jsfiddle.net/sYFuY/