Javascript检查表单的当前数据是否等于其原始数据
Javascript check the form current data is equal to its original data
当我在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/
相关文章:
- YUI3 IO实用程序是否可以根据给定的内容类型标头值自动序列化数据
- 当eval只执行服务器端数据时,在javascript中使用eval是否安全
- 是否可以使用CSS分配数据属性
- 在检索数据时是否可以停止图像加载请求
- 组合框是否需要数据存储
- E4X中是否有一种方法可以将基元数据类型的XMLList转换为类似于Array.join()的Array
- 是否可以使用不同投影的另一个WMS层显示OSM数据
- Javascript检查表单的当前数据是否等于其原始数据
- 是否可以创建一个画布来提取图像数据,而无需实际渲染画布
- 是否可以将音频存储为javascript/jQuery中的blob数据
- 是否可以使用googleanalystics.js在客户端获取推荐数据
- 是否可以将谷歌分析数据发送给供应商
- 如何检查数据表是否有任何包含字符串的行并获取它的行索引
- 识别值是否与 jqGrid 数据中的任何键匹配的正确方法是什么?
- 在HTML5中是否可以有多个数据{名称}属性
- 数据是否等于保留或无法被 jQuery/Sizzle 选择
- 是否可以使用下划线.js对此 JSON 数据进行分组
- REST API 服务器是否应该使用 PUT 接收 JSON 数据或普通表单数据
- 从不断变化的动作创建者那里获取商店数据是否是一种常见的做法
- 测试两个变量是否包含一些数据 JavaScript