禁用"保存"按钮,直到至少一个输入字段已更改

时间:2015-01-21 12:24:12

标签: javascript angularjs

页面中有大约20个输入字段和一个保存和一个注册按钮。如果在至少一个字段中发生了某些变化,我该如何启用“保存”按钮?

4 个答案:

答案 0 :(得分:5)

您可以使用Angularjs表单验证:

我想你创建了一个带有文本输入的表单。

您可以有条件地禁用保存按钮(如果表单是可用的,请禁用该按钮):

<input type="submit" ng-disabled="myForm.$pristine" />

工作人员here

答案 1 :(得分:1)

假设您的HTML看起来像这样:

<input>
<input>
<input>
<button class=save disabled>Save</button>

您可以这样做:

var inputs = document.getElementsByTagName("input");
var enableSave = function() {
  document.querySelector("button.save").disabled = false;
  for (var i = 0; i < inputs.length; i++) {
    inputs[i].removeEventListener("input", enableSave);
  }
};

for (var i = 0; i < inputs.length; i++) {
  inputs[i].addEventListener("input", enableSave);
}

答案 2 :(得分:1)

如果您不需要比较值,您可以将关键事件的事件处理程序附加到所有文本框,并在触发任何文本框中的事件后启用保存按钮。

如果您需要更复杂的“复杂”功能,只有在某些数据真正发生变化时才能保存(您可以将“aaa”更改为“aa” - 但后来意识到您希望将其恢复为“aaa” )然后您需要维护原始数据并将其与任何新更改进行比较,然后确定是启用保存按钮还是禁用它。在这种情况下,您可以为输入文本框添加某种"original-data"属性,这些属性将在生成/加载页面时保留原始值,并在每个键更改事件中运行比较器。

答案 3 :(得分:0)

使用ng-disabled

可以禁用表单按钮
<form name="myForm">
Name : 
<input type="text" name="Name" required><br>
Age:
<input type="number" name="Age" required><br>
<input type="submit" value="Save" ng-disabled="myForm.$error.required">

此处仅当满足表单中的必填字段时才启用保存按钮