3

我在所有匹配的输入上都有这个绑定事件:

$('input[name$="_keyword"]').each(function() {
    $(this).bind("propertychange keyup input paste", function(event){
    if ($(this).val() != '') {
        $(this).prevAll('select').attr('disabled', true);
    } else {
        $(this).prevAll('select').attr('disabled', false);
    }
    });
});

如果文本已被输入到它的文本输入中,这将禁用相关的下拉菜单。

但是,如果我在其中一个输入中键入某人_keyword,从而禁用相关的下拉菜单,然后点击我的 HTML 重置按钮,表单中的所有字段都将清除,但下拉菜单将不会启用。单击重置按钮时如何启用这些?

<input type="reset" value="Reset"/>

JSFIDDLE

4

6 回答 6

3

您可以在表单的reset事件上注册一个处理程序以重新启用下拉菜单:

 $('form').on('reset', function() { $('form select').removeAttr('disabled'); });
于 2012-09-11T03:26:17.803 回答
2

您需要propertychange通过重置按钮上的单击处理程序触发绑定中的事件之一(例如)。

$('input:reset').click(function() {
  $('input[name$="_keyword"]').val('').trigger("propertychange");
});

见工作小提琴:

http://jsfiddle.net/GHpmh/1/

于 2012-09-11T03:47:20.883 回答
1

表单重置不会触发您正在侦听的任何事件。您还需要绑定“重置”事件。不幸的是,您必须在表单级别绑定它,而不是在单个字段上,因为并非所有浏览器都会将重置事件冒泡到字段。

于 2012-09-11T03:26:27.670 回答
1

将单击处理程序添加到您的重置按钮如何?例如:

$("input[type=\"reset\"]").on("click", function(event) {
    $("select").attr('disabled', true);
})
于 2012-09-11T03:28:14.173 回答
1

您可以在表单上监听reset事件并在那里启用选择

$('form').on('reset', function() {
    $('select', this).prop({disabled: false});
});

​演示

于 2012-09-11T03:32:33.253 回答
0

结合上面的几个答案,我会这样做以重置表单中的选择元素并触发更改功能

$('form').on('reset', function() { $('form select').val('all').trigger('change'); });

在表单标记中使用 HTML 重置按钮

<input type="reset" id="reset" value="Reset">
于 2014-10-29T20:41:02.003 回答