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库/框架吗?我在考虑关闭,但希望推迟到我需要跨浏览器兼容时,也就是说,当我部署它时..它是怎样的?放