如何找到jQuery中未更改的输入元素?

时间:2010-11-25 17:02:11

标签: jquery jquery-selectors

我想查找具有特定类的所有表单元素,并检查它们是否已被更改。 if语句完成它的工作,但我不知道如何纠正find thingy。这是正确的方向还是我错了?

$("input").find(".formWithMyClass").load(function() {
   if (this.value !== this.defaultValue){
       $(this).addClass("inactiveForm");
   }
 });

干杯!

3 个答案:

答案 0 :(得分:2)

您可以编写自定义选择器...

(function($) {
    $.expr[':'].defaultValue = function(obj) {
       return obj.value === obj.defaultValue;
    };
})(jQuery);

然后,您应该能够$('input:defaultValue')获取input属性设置为value的所有defaultValue个元素。

但是,如果要查找所有输入类型元素,可能需要扩展该自定义选择器。

我似乎无法找到获取select元素原始值的方法(不是先设置它们)。他们的defaultValue属性为undefinedselectedIndex可能是最后选择的值。

答案 1 :(得分:1)

$(function() {
    $('form.formWithMyClass input').each(function() {
        if (this.value !== this.defaultValue) {
            $(this).closest('form').addClass("inactiveForm");
        }
    });
});

如果您的<form class="formWithMyClass">中包含<input />

$(function() {
    $('input.formWithMyClass').each(function() {
        if (this.value !== this.defaultValue) {
            $(this).closest('form').addClass("inactiveForm");
        }
    });
});

如果您的<form>中包含<input class="formWithMyClass" />

答案 2 :(得分:0)

您还需要注意选择菜单等内容。 查看JQuery API中的.val(value)