2010-11-25 27 views
1

我想查找所有表单元素,并指定一个类,并检查它们是否已被修改。 if语句确实是工作,但我不知道要纠正这个问题。这是正确的方向还是我弄错了?如何找到jQuery中尚未更改的输入元素?

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

干杯!

回答

2

你可以写一个自定义的选择...

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

那么你应该能够做到$('input:defaultValue')让所有input元素其中的value属性设置为defaultValue

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

我似乎无法找到获得select元素的原始值(并非没有首先设置它们)的方法。他们的defaultValue财产是undefinedselectedIndex可能是最后选择的值。

+0

+1优雅的解决方案。如果OP想要轻松检查*存在任何*改变的字段,则可以使用反码。 – jensgram 2010-11-25 17:09:08

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(值)