【问题标题】:How to reset AJAX results input field如何重置 AJAX 结果输入字段
【发布时间】:2012-07-10 21:27:43
【问题描述】:

我的表格很长,包含多个步骤。用户需要能够点击重置,以防他们需要重新开始。

我已经实现了一个非常基本的 javascript,如下所示:

<script type="text/javascript">
  function resetOnlyThese(){
  document.getElementById('room_str').selectedIndex = "";
  document.getElementById('qty_str').selectedIndex = "";
  // ...
  }
</script> 

<input type="button" value="Reset" onclick="resetOnlyThese()">

我正在使用 AJAX 更新表单,计算价格并显示在 SPAN 中。

<span class="totalprice-placeholder"></span>

所有无线电、输入字段和下拉框都完美重置,但成功的 AJAX 回调生成的价格计算保持不变。有没有办法重置回调部分?

谢谢。

【问题讨论】:

    标签: javascript ajax callback reset


    【解决方案1】:

    您必须为计算字段提供清理功能。

    <script type="text/javascript">
      function resetOnlyThese(){
        document.getElementById('room_str').selectedIndex = "";
        document.getElementById('qty_str').selectedIndex = "";
        // ...
        // add some clean up code to clear the span elements
        document.getElementById('totalprice-placeholder').innerHtml = "";
      }
    </script> 
    
    <!-- when referencing a specific html element it's better to use "id"
         instead of "class"
     -->
    <span id="totalprice-placeholder"></span>
    

    【讨论】:

    • 虽然有道理,但似乎不起作用。是因为那个跨度没有ID吗?有没有办法做 getElementByClass 还是我只分配一个 ID?
    • 对不起!你是对的:我看到了 class,但是 read id... 如果可以的话,建议在这样的上下文中将 class 更改为 id,因为它会产生更好的性能。我会修改我的建议以反映它。
    • 这很奇怪。我所做的一切都不起作用。我从 class 更改为 id... id 更改为 class。检查拼写。 Ajax 在用户与下拉菜单交互时更新这个类(这会改变总价格)。然后,如果您单击“重置”,所有字段都会变为空白(应该如此),但这个总框仍然保持不变。
    • 清理span元素的内容与AJAX没有直接关系——它只是关于DOM操作和javascript——但可能有一些race条件可以满足这些条件元素被清理之后。您可以在此处或 [jsfiddle.net/]@ 发布更多信息吗?
    【解决方案2】:

    我发现这个脚本循环遍历所有元素并非常简单地重置它们。

    <script type="text/javascript">
    function clear_form_elements(ele) {
        $(ele).find(':input').each(function() {
            switch(this.type) {
                case 'password':
                case 'select-multiple':
                case 'select-one':
                case 'text':
                case 'textarea':
                    $(this).val('');
                    break;
                case 'checkbox':
                case 'radio':
                    this.checked = false;
            }
        });
    
    }
    

    【讨论】:

      猜你喜欢
      • 2016-05-31
      • 2014-10-19
      • 2011-02-27
      • 1970-01-01
      • 2014-10-21
      • 2017-04-16
      • 1970-01-01
      • 1970-01-01
      • 2012-09-21
      相关资源
      最近更新 更多