0

私は複数のステップを持つ非常に長いフォームを持っています。ユーザーは、最初からやり直す必要がある場合に備えて、[リセット]をクリックできる必要があります。

以下のような非常に基本的な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コールバックから生成された価格計算は同じままです。コールバック部分もリセットする方法はありますか?

ありがとうございました。

4

2 に答える 2

0

計算フィールドにクリーンアップ関数を提供する必要があります。

<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>
于 2012-07-10T21:42:25.080 に答える
0

すべての要素をループし、それらすべてを非常に簡単にリセットするこのスクリプトを見つけました。

<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;
        }
    });

}

于 2012-07-16T22:53:04.257 に答える