5

既に設定されているフォーム コントロールをページに配置した場合value、含まれているフォームのリセット機能をトリガーすると、ページが読み込まれた時点で値が元の値に戻ります。

ただし、javascript を使用してフォーム コントロールを作成し、それを DOM に追加すると、フォームがリセットされるとフォーム コントロールが消去されて空白になります。この動作を防ぐにはどうすればよいですか? 入力にデフォルト値を与えたいので、ページの読み込み時にページにあったコントロールと同じように扱われます。

次の例では、[リセット] をクリックすると、1 つの入力 (スクリプトで追加されたもの) がクリアされますが、もう 1 つの入力 (静的なもの) はクリアされません。私が望むのは、両方の入力がその値を保持することです。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.sourceforge.net/" xml:lang="en" lang="en">
    <head>
    </head>
    <body>
        <form id="container">
            <input type="reset" value="RESET" />
            <input type="text" value="DefaultValue" />
        </form>
        <script type="text/javascript">
        window.onload = function() {
            var input = document.createElement('input');
            input.setAttribute('value', 'DefaultValue2');
            document.getElementById('container').appendChild(input);
        };
        </script>
    </body>
</html>

この単純なテスト ケースには jQuery を含めていませんが、私のプロジェクトでは jQuery を使用しており、jQuery ソリューションがあれば幸いです。

4

3 に答える 3

12

フォームreset()defaultValueプロパティを使用するので、あなたがする必要があるのはそれを設定することだけです...

window.onload = function() { 
  var input = document.createElement('input');
  input.value = input.defaultValue = 'DefaultValue2';
  document.getElementById('container').appendChild(input); 
}; 
于 2010-08-13T15:51:26.887 に答える
0

デフォルトの「リセット」入力に機能を追加する必要があります。たとえば、onResetイベントを使用してを設定できますinput's value = 'defaultvalue2'。これにより、両方の入力フィールドがリセットされ、一方は静的に、もう一方はonResetメソッドを介してリセットされます。

于 2010-08-13T15:44:38.597 に答える
0

フォームにはonresetイベントがあり、ppkによればクロスブラウザーで利用できます。リセット ボタンを押したときに Javascript で作成された要素が初期値にリセットされない場合は、イベントを使用して「手動で」リセットすることができます。

ただし、私のテストでは、JavaScript で作成された要素をリセットすると (私の例では Prototype を使用していますが、違いはありません)、追加のonresetハンドラーを必要とせずに Firefox 3.6 および Chrome 5 で動作します (IE6 では動作しません)。

于 2010-08-13T15:42:29.507 に答える