Javascript 检查表单当前数据是否等于其原始数据

标签 javascript jquery html

当我在 JavaScript 中使用 form.reset() 时。该函数会将表单重置为其原始状态。例如:

<form id="myForm">
  First name: <input type="text" name="fname" value="??"><br>
  Last name: <input type="text" name="lname"><br><br>
  <input type="button" onclick="myFunction()" value="Reset form">
</form>

<script>
function myFunction() {
    var form = document.getElementById("myForm");
    form.reset();
}
</script>

当我运行此代码时,第一个输入字段将重置为“??” (这是原始值)。 javascript如何获取这个值呢?我可以访问它吗?

我正在建立一个网站,需要检查用户是否更改了表单的任何值。如果没有任何变化,我想阻止用户提交表单。这就是为什么我问是否有任何方法可以有一个通用方法来检查某个字段的当前值是否等于其原始值。

最佳答案

输入元素的默认值是通过在元素本身中输入 value="default value"来设置的,就像您在第一个元素中所做的那样。重置表单会将输入元素恢复为其默认值。

要访问元素的默认值,您需要访问 defaultValue 属性。

JavaScript:

document.getElementById('firstName').defaultValue;

jQuery(因为您在问题中标记了 jQuery):

$('#firstName')[0].defaultValue;

提交表单后,您可以轻松检查当前表单值与默认表单值。

下面是一个利用 jQuery 来执行此操作的示例:

HTML

<form id="myForm">
    <label for="firstName">First name:</label>
    <input id="firstName" type="text" name="fname" value="defaultval1" />
    <br />
    <label for="lastName">Last name:</label>
    <input id="lastName" type="text" name="lname" value="defaultval2" />
    <br />
    <br />
    <input id="btnSubmit" type="button" value="Submit" />
    <input id="btnReset" type="button" value="Reset" />
</form>

JavaScript

function hasAnythingChanged() {
    var hasChanged = false;
    $('#myForm :input[type=text]').each(function () {
        if (this.defaultValue != this.value) {
            hasChanged = true;
        }
    });
    return hasChanged;
}

$(function () {
    $('#btnReset').on('click', function () {
        var form = document.getElementById("myForm");
        form.reset();
    });

    $('#btnSubmit').on('click', function () {
        event.preventDefault();
        if (hasAnythingChanged()) {
            alert('Submitting at least one changed value!');
            // Do your submit action here
        } else {
            alert('Please change at least one value.')
            return false;
        }
    });
});

演示:http://jsfiddle.net/BenjaminRay/jLvh98br/

关于Javascript 检查表单当前数据是否等于其原始数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29245010/

相关文章:

javascript - 了解调用函数的组件

javascript - jquery 在页面加载之前使用循环添加元素

javascript - 使用 javascript 从文本文件中获取值

javascript - 通过 javascript 添加 cookie 导致我的 laravel 错误

javascript - 根据 API 响应在组件内 React 渲染 PDF 文件

javascript - 同步 Dygraphs,其中一些有双 y 轴?

jquery - bootstrap 是否支持列宽等于零以便在超小屏幕中隐藏网格列?

javascript - 如何计算搜索列表中可见的 'li'

javascript - 如何在该类中的函数内的类中设置 this.var?

javascript - 使用 Bootstrap 时网站在移动设备上显示 strangley