有什么方法可以检查JavaScript中表单是否脏了?

时间:2018-10-18 11:38:59

标签: javascript kendo-ui kendo-ui-grid kendo-validator

我在Java脚本中有一个表单验证器示例。在这种情况下,是否可以检查表格是否脏了?

我的平台是JavaScript

请在下面找到相应的样本,并提出解决方案。

sample link

代码片段: 我曾经用过:

if (name.value != name.defaultValue) { 
    alert("#name has changed"); 
    }

3 个答案:

答案 0 :(得分:1)

您有kendo-ui-grid和kendo-validator标记,所以我想您正在使用kendo框架。 如果要查看表单是否脏污,则应以kendo方式sample检查viewModel。

基本上,我创建了一个viewModel,它可以增强ObservableObject接口,并具有与表单容器的双向绑定。 每次您以表单形式进行更改时,都会在viewModel中触发change事件,该事件会将变量(脏)设置为true。

var dirty = false;
var viewModel = new kendo.data.ObservableObject({
    fullname: "test"
});
viewModel.bind("change", function () {
    alert("changed");
    dirty = true;
});
kendo.bind($("#tickets"), viewModel);

在ObservableObject中添加您需要“观看”的所有字段 并在其标记上设置属性data-bind="value:fieldName"

答案 1 :(得分:0)

您可以使用JQuery这样的东西...

var _isDirty = false;
$("input[type='text']").change(function(){
  _isDirty = true;
});

答案 2 :(得分:0)

在编辑表单中的任何内容时,都需要一个全局布尔变量来记住。

此变量最初应为false,然后当用户编辑输入时,它将更改为true。当您提交表单时,它会变回false。现在,您可以随时检查脏变量是true还是false。

示例代码:

var dirty = false;

var inputs = document.querySelectorAll('input');
for (var i = 0;i < inputs.length)
{
    var input = inputs[i];
    input .addEventListener('input', function()
    {
        dirty = true;
    });
}

var form = document.forms[0];
form.addEventListener('submit, function()
{
    dirty = false;
}