【问题标题】:Is there any way to check whether form is dirty or not in JavaScript?有没有办法在 JavaScript 中检查表单是否脏?
【发布时间】:2018-10-18 11:38:58
【问题描述】:

我在 java 脚本中有一个表单验证器示例。这种情况下,有没有办法检查表单是否脏?

我的平台是 JavaScript

请在下面找到相应的示例,并提出任何解决方案。

sample link

代码片段: 我用过:

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

【问题讨论】:

  • 你遇到了什么问题
  • 我想检查表单是否脏了。如果表单很脏,它必须显示一些弹出窗口。有什么方法可以在javascript中检查这个。
  • @SumeshTG,在角度上,它们有脏变量,显示表单是否脏。但我想在 javascript 中检查这个
  • 你说“脏”是什么意思?
  • 如果任何一个表单元素被触摸或更改,则表单是脏的

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


【解决方案1】:

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

基本上我已经创建了一个视图模型,它实现了 ObservableObject 接口,并与表单的容器有两种方式绑定。 每次您更改表单中的某些内容时,都会在 viewModel 中触发更改事件,该事件将变量(脏)设置为 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"

【讨论】:

  • 谢谢,但我不想要这个答案,我已经检查过这个概念
【解决方案2】:

你可以使用类似这样的 JQuery...

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

【讨论】:

  • 您能否提供任何基于此的样本
【解决方案3】:

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

这个变量最初应该为假,然后当用户编辑输入时,它变为真。当您提交表单时,它会变回 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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-15
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    相关资源
    最近更新 更多