我想检查是否有任何字段被更改或在表单上排除少数字段。为此,我尝试了以下字段。
$('#FormId').not('#elementId').data("changed")
但它不排除id为'elementId'的元素。
答案 0 :(得分:0)
您可以执行以下操作:
// this binds the following function on any inputs type=text under #FormId
$('#FormId input[type=text]')bind("change", function(){
// do something
});
// You can add more elements, or classes by adding commas to the selector
$('#FormId input[type=text], .anotherclass, .onemoreclass')bind("change", function(){
.
.
.
.
答案 1 :(得分:0)
我认为您要检查表单数据是否更改 这是我用过的一种方法。
为所有输入创建更改事件,它将触发任何更改 以下是相同的代码建议
var oldFormData = '';
$(function () {
oldFormData == $('#FormId').serialize();
$('form :input').on('change input', function () {
var isChange = $('#FormId').serialize() !== origForm
});
})
答案 2 :(得分:0)
假设您要标记要使用数据属性跟踪的输入(在此示例中为data-change-tracking
)。
<强> HTML 强>
<form action="/echo/html/" method="post">
<p>
<label>A text input</label>
<input data-change-tracking="true" value="abc"/>
</p>
<p>
<label>A select</label>
<select data-change-tracking="true">
<option value="1">option 1</option>
<option value="2">option 2</option>
</select>
</p>
<p>
<label>A textarea</label>
<textarea data-change-tracking="true">old</textarea>
</p>
<p>
<label>Not tracked</label>
<input value="123" />
</p>
</form>
然后,当输入从之前的值发生变化时,我们只需添加一个dirty
类:
<强>的Javascript 强>
$(function() {
$('[data-change-tracking]').each(function(){
$(this).data('previousValue', this.value);
});
$('form').on('change', '[data-change-tracking]', function(ev) {
if (ev.target.value !== $(ev.target).data('previousValue')) {
$(ev.target).addClass('dirty');
} else {
$(ev.target).removeClass('dirty');
}
});
});