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

问题描述 投票:1回答:3

我想查找具有特定类的所有表单元素,并检查它们是否已更改。 if语句可以完成它的工作,但我不知道要纠正该发现。这是朝正确的方向还是我做错了?

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

干杯!

jquery jquery-selectors
3个回答
2
投票

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

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

然后您应该可以执行$('input:defaultValue')来获取其input属性设置为value的所有defaultValue元素。

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

我似乎无法找到一种方法来获取select元素的原始值(并非没有首先设置它们)。它们的defaultValue属性是undefinedselectedIndex可能是最后选择的值。


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" />


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.