Javascript 是否有预定义的方法重置(X)HTML文档中的所有元素?
就像一个人可以使用表单一样:Javascript 是否有预定义的方法重置(X)HTML文档中的所有元素?,javascript,html,ajax,dom,xhtml,Javascript,Html,Ajax,Dom,Xhtml,就像一个人可以使用表单一样: document.forms[0].reset(); 但是我没有像使用AJAX那样使用表单。。我必须使用JavaScript循环遍历所有元素吗?一个快速且肮脏的技巧是将文档的字段包装在表单标记中,但使onsubmit事件返回false,如下所示 <form id="form_resetter" onsubmit="return false;"> ... </form> …在其上重置内部的所有字段 但实际上,无论如何,您都应该将支持AJAX
document.forms[0].reset();
但是我没有像使用AJAX那样使用表单。。我必须使用JavaScript循环遍历所有元素吗?一个快速且肮脏的技巧是将文档的字段包装在表单标记中,但使onsubmit事件返回false,如下所示
<form id="form_resetter" onsubmit="return false;">
...
</form>
…在其上重置内部的所有字段
但实际上,无论如何,您都应该将支持AJAX的字段放在表单标记中,因为这将是一种优雅的降级。一个快速且肮脏的技巧是将文档的字段包装在表单标记中,但使onsubmit事件返回false,如下所示
<form id="form_resetter" onsubmit="return false;">
...
</form>
…在其上重置内部的所有字段
但实际上,无论如何,您都应该将支持AJAX的字段放在一个表单标记中,因为这将是一种优雅的降级。一旦您为输入元素指定了类名,就可以轻松使用函数:
function clearInput() {
var fields = document.getElementsByClassName("inputFields");
for(var i = 0; i < fields.length; i++) {
switch(fields[i].tagName)
{
case "INPUT": fields[i].value = null; break;
case "SELECT": fields[i].selectedIndex = 0; break; // ASSUMPTION: 0 is the default
}
}
}
但是你必须检查type==“text”,否则你的按钮和其他输入元素的值也会被清除。否,但结果是它的v。一旦您为输入元素指定了类名,就可以轻松使用函数:
function clearInput() {
var fields = document.getElementsByClassName("inputFields");
for(var i = 0; i < fields.length; i++) {
switch(fields[i].tagName)
{
case "INPUT": fields[i].value = null; break;
case "SELECT": fields[i].selectedIndex = 0; break; // ASSUMPTION: 0 is the default
}
}
}
但是,您必须选中type==“text”,否则按钮和其他输入元素的值也将被清除。添加表单。逐步增强它,使JavaScript覆盖正常功能
更多的用户将能够使用该页面,而您不必尝试重新破解相关功能。添加表单。逐步增强它,使JavaScript覆盖正常功能
更多的用户将能够使用该页面,而您不必尝试重新破解相关功能。您应该始终使用HTML
元素,即使(尤其是)使用AJAX。它将更易使用、更易访问,并将使您作为开发人员的生活更轻松。如果你不相信我,在谷歌上搜索“ajax”或“可访问ajax”;其实很简单
例如,这里有一个AJAX表单,它使用地球上最伟大的JavaScript库优雅地降级:
<form method="post" action="ajax/test.html" name="ajax-form" id="ajax-form">
<fieldset>
<legend>Form name</legend>
<p><label for="username">Username: <input type="text" name="username" id="username" value="" /></label></p>
<p><label for="password">Password: <input type="password" name="password" id="password" value="" /></label></p>
<p>
<label for="option-a">Option A: <input type="radio" name="options" id="option-a" value="a" /></label><br/>
<label for="option-b">Option B: <input type="radio" name="options" id="option-b" value="b" /></label><br/>
<label for="option-c">Option C: <input type="radio" name="options" id="option-c" value="c" /></label>
</p>
<p>
<label for="select-box">Select Box:
<select name="select-box" id="select-box" size="1">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</label>
</p>
<p class="buttons"><button type="submit">Submit</button> <button type="reset">Reset</button></p>
</fieldset>
</form>
<script type="text/javascript">
$().ready(function() {
var $ajaxForm = $('#ajax-form');
// Create container to store ajax result
$ajaxForm.find('.buttons').after($('<p class="result"/>'));
// Bind event handler
$ajaxForm.bind('submit', function(event, data) {
// Simple ajax POST request
// See http://api.jquery.com/jQuery.post/
$.post($ajaxForm.attr('action'), 'ajax=1&' + $ajaxForm.serialize(), function(data) {
$('.result').html(data);
});
// Disable default form submit behavior
return false;
});
// Bind click handler to override "reset" behavior...
// Although this really isn't necessary if you're using the HTML <form> element, which you should be...
$ajaxForm.find('button:reset').bind('click', function(event, data) {
var $els = $ajaxForm.find('input, textarea, select');
$els.filter('input:text, input:password, textarea').val('');
$els.filter('input:radio, input:checkbox').attr('checked', false);
$els.filter('select').attr('selectedIndex', '');
return false;
});
});
</script>
<style type="text/css">
fieldset {
border: 0;
padding: 0;
margin: 0;
}
fieldset legend {
display: none;
}
</style>
表格名称
用户名:
密码:
选项A:
选项B:
备选案文C:
选择框:
1.
2.
3.
提交重置
$().ready(函数()){
var$ajaxForm=$(“#ajax form”);
//创建用于存储ajax结果的容器
$ajaxForm.find('.buttons')。在($('))之后;
//绑定事件处理程序
$ajaxForm.bind('submit',函数(事件、数据){
//简单ajax POST请求
//看http://api.jquery.com/jQuery.post/
$.post($ajaxForm.attr('action'),'ajax=1&'+$ajaxForm.serialize(),函数(数据){
$('.result').html(数据);
});
//禁用默认表单提交行为
返回false;
});
//绑定单击处理程序以覆盖“重置”行为。。。
//虽然如果您使用的是HTML元素,这实际上是不必要的,您应该。。。
$ajaxForm.find('button:reset').bind('click',函数(事件,数据){
var$els=$ajaxForm.find('input,textarea,select');
$els.filter('input:text,input:password,textarea').val(“”);
$els.filter('input:radio,input:checkbox').attr('checked',false);
$els.filter('select').attr('selectedIndex','');
返回false;
});
});
字段集{
边界:0;
填充:0;
保证金:0;
}
字段集图例{
显示:无;
}
您应该始终使用HTML
元素,即使(尤其是)使用AJAX。它将更易使用、更易访问,并将使您作为开发人员的生活更轻松。如果你不相信我,在谷歌上搜索“ajax”或“可访问ajax”;其实很简单
例如,这里有一个AJAX表单,它使用地球上最伟大的JavaScript库优雅地降级:
<form method="post" action="ajax/test.html" name="ajax-form" id="ajax-form">
<fieldset>
<legend>Form name</legend>
<p><label for="username">Username: <input type="text" name="username" id="username" value="" /></label></p>
<p><label for="password">Password: <input type="password" name="password" id="password" value="" /></label></p>
<p>
<label for="option-a">Option A: <input type="radio" name="options" id="option-a" value="a" /></label><br/>
<label for="option-b">Option B: <input type="radio" name="options" id="option-b" value="b" /></label><br/>
<label for="option-c">Option C: <input type="radio" name="options" id="option-c" value="c" /></label>
</p>
<p>
<label for="select-box">Select Box:
<select name="select-box" id="select-box" size="1">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</label>
</p>
<p class="buttons"><button type="submit">Submit</button> <button type="reset">Reset</button></p>
</fieldset>
</form>
<script type="text/javascript">
$().ready(function() {
var $ajaxForm = $('#ajax-form');
// Create container to store ajax result
$ajaxForm.find('.buttons').after($('<p class="result"/>'));
// Bind event handler
$ajaxForm.bind('submit', function(event, data) {
// Simple ajax POST request
// See http://api.jquery.com/jQuery.post/
$.post($ajaxForm.attr('action'), 'ajax=1&' + $ajaxForm.serialize(), function(data) {
$('.result').html(data);
});
// Disable default form submit behavior
return false;
});
// Bind click handler to override "reset" behavior...
// Although this really isn't necessary if you're using the HTML <form> element, which you should be...
$ajaxForm.find('button:reset').bind('click', function(event, data) {
var $els = $ajaxForm.find('input, textarea, select');
$els.filter('input:text, input:password, textarea').val('');
$els.filter('input:radio, input:checkbox').attr('checked', false);
$els.filter('select').attr('selectedIndex', '');
return false;
});
});
</script>
<style type="text/css">
fieldset {
border: 0;
padding: 0;
margin: 0;
}
fieldset legend {
display: none;
}
</style>
表格名称
用户名:
密码:
选项A:
选项B:
备选案文C:
选择框:
1.
2.
3.
提交重置
$().ready(函数()){
var$ajaxForm=$(“#ajax form”);
//创建用于存储ajax结果的容器
$ajaxForm.find('.buttons')。在($('))之后;
//绑定事件处理程序
$ajaxForm.bind('submit',函数(事件、数据){
//简单ajax POST请求
//看http://api.jquery.com/jQuery.post/
$.post($ajaxForm.attr('action'),'ajax=1&'+$ajaxForm.serialize(),函数(数据){
$('.result').html(数据);
});
//禁用默认表单提交行为
返回false;
});
//绑定单击处理程序以覆盖“重置”行为。。。
//虽然如果您使用的是HTML元素,这实际上是不必要的,您应该。。。
$ajaxForm.find('button:reset').bind('click',函数(事件,数据){
var$els=$ajaxForm.find('input,textarea,select');
$els.filter('input:text,input:password,textarea').val(“”);
$els.filter('input:radio,input:checkbox').attr('checked',false);
$els.filter('select').attr('selectedIndex','');
返回false;
});
});
字段集{
边界:0;
填充:0;
保证金:0;
}
字段集图例{
显示:无;
}
你在使用JavaScript库/框架吗?我在考虑关闭,但希望推迟到我需要跨浏览器兼容时,即部署它时。你在使用JavaScript库/框架吗?我在考虑关闭,但希望推迟到我需要跨浏览器兼容时,也就是说,当我部署它时..它是怎样的?放