Mor*_*ori 6 html javascript forms
这是一个示例表格:
var form = document.querySelector('form');
function detectChange() {
var inputs = form.querySelectorAll('input');
for (var input of inputs) {
if (input.value != input.defaultValue) {
return true;
}
}
}
form.querySelector('button').addEventListener('click', function() {
if (detectChange() && confirm('Are you sure you want to reset?')) {
form.reset();
}
});Run Code Online (Sandbox Code Playgroud)
<form>
<input type="number">
<input type="number" value="7">
<button type="button">Reset</button>
</form>Run Code Online (Sandbox Code Playgroud)
我希望即使用户输入非数字值,重置按钮也可以使用。
如果您查看inputDOM对象,则对象下有一个属性badInput,validity其值为a boolean。对于数字输入或空白字段,为false。然而,它的true非数值,可有趣的是在你的情况下使用。
注意:仅在firefox和上进行了测试safari
input
| +-- ...
| +-- validity
| | +-- badInput
| | +-- ...
| +-- ...
Run Code Online (Sandbox Code Playgroud)
使用此知识,您可以通过badInput最小的调整来修改功能以检查是否要实现所需的功能。
// non-empty and non default
if ((input.value && input.value != input.defaultValue) || input.validity.badInput)
Run Code Online (Sandbox Code Playgroud)
input
| +-- ...
| +-- validity
| | +-- badInput
| | +-- ...
| +-- ...
Run Code Online (Sandbox Code Playgroud)
// non-empty and non default
if ((input.value && input.value != input.defaultValue) || input.validity.badInput)
Run Code Online (Sandbox Code Playgroud)
更新:
更新以涵盖:
具有非空默认值的输入