我无法使用parent()或siblings或find()或子项或其他任何内容找到提交按钮。我有许多具有相同结构的分区(for循环)[每个分区都有一个动态名称]
这是我的代码:
Javascript部分:
$('.notempty').keyup(function () {
alert($(this).val()); // alerts the value normally
if ($(this).val().length == 0) {
$(this).siblings('.submit').attr('disabled', 'disabled');
} else {
$(this).siblings('.submit').removeAttr('disabled');
}
});
HAML :(注意名称是变量)
%div{id: 'status' + name, class: 'modal hide fade padded'}
%form.form{name: 'form' + name, class: 'form-inline'}
.form-group
.col-10
%input.form-control{id: 'duration', name: 'duration', class: 'notempty'}
.col-sm-offset-2.col-sm-10
%button.btn.btn-default{type: 'submit', id: 'submit', disabled: 'disabled', class: '.submit'} Submit
当我明确使用$("#submit")
时代码有效,但我无法通过多个分区执行此操作,因为它将返回它找到的第一个提交,而不是与该特定表单/ divison相关的提交< / p>
更新源视图中生成的HTML
<!-- popup -->
<div class='modal hide fade padded' id='statusx1'>
<form class='form form-inline' name='maintenancex1'>
<div class='form-group'>
<div class='col-10'>
<input class='form-control notempty' id='duration' name='duration'>
</div>
<div class='col-sm-offset-2 col-sm-10'>
<button class='.submit btn btn-default' disabled='disabled' id='submit' type='submit'>Submit</button>
</div>
</div>
</form>
</div>
答案 0 :(得分:1)
你的兄弟姐妹代码也是错误的。在jQuery中,兄弟是一个包含在同一个父元素中的元素,而不是祖父元素。在你的案例中,兄弟姐妹的例子,
<div class='col-10'>
<input class='form-control notempty' id='duration' name='duration'>
<div class='i-am-a-sibling-to-notemptydiv>
</div>
<div class='col-10'>
<input class='form-control' id='duration' name='duration'>
<div class='i-am-not-a-sibling-to-notempty'></div>
</div>
你想要的是写这样的javascript部分,
if ($(this).val().length == 0) {
$(this).parents().find('.submit').attr('disabled', 'disabled');
} else {
$(this).parents().find('.submit').removeAttr('disabled');
}
另外,如前所述,不要写.submit但是在html类中提交。