1

フォームのJavascriptリセットメソッドは非表示の入力に影響を与えるとは考えられていませんが、IE8とIE7ではとにかく影響します。誰かがそれを適切に動作させる方法を知っていますか?

個々の入力をループするか、フォームをリセットしてから復元する前に値を記憶することでそれを実行できることはわかっていますが、誰かがもっと簡単な方法を考え出すことができるかどうか疑問に思っています。ソリューションが簡単になる場合は、jQueryを自由に使用してください。http://jsfiddle.net/Ddtz4/で例を見ることができます。

プラグインの作成者によると、これはおそらくIEのバグではなく、初期値のない要素に対するリセットメソッドの影響は定義されていません。

4

4 に答える 4

0

JavaScript関数を使用して、リセットボタンのプッシュをキャプチャし、それらの値をCookieとして保存してから、trueを返してリセットプロセスを完了することができます。リロード時に、これらのCookieを確認し、それらの値をプラグインし直すことができます。

于 2012-05-03T23:12:34.637 に答える
0

jQueryを使用して、次のようなことを考えています。

$(document).delegate("form", "resetForm", function() {
    $(this).find("input[type=hidden]").each(function() {
        $(this).prop("defaultValue", $(this).val());
    });
    this.reset();
});

フォームをリセットしたいときはいつでも、これを行うことができます:

$("#whateverForm").trigger("resetForm");
于 2012-05-03T23:46:33.473 に答える
0

次のスニペットはIE8でも機能しているようです

$("#testInput").val('foo');
$("#testForm")[0].reset();
$("#result").html($("#testInput").val());

アップデート:

代わりにカスタムリセットfunction()を作成しないのはなぜですか?

$("#resetbutton").on("click", function() {
    var form = $(this).closest('form');
    form.find("input:not(:hidden)").val('');
    form.find("select").prop('selected', false);
    // so on

});
于 2012-05-03T23:56:48.793 に答える
0

これを行う簡単な方法の1つはreset()、リセット中にフォームから非表示の要素を一時的に削除することです。

function fixReset() {
    var testForm =  document.getElementById("testForm");
    testForm._nativeReset = testForm.reset;
    testForm.reset = function(){
        var hidden = $('input[type=hidden]',this).detach();
        this._nativeReset();
        $(this).append(hidden);
    }
};
$(document).ready(fixReset);

このようにして、必要に応じてネイティブのリセットボタンを引き続き使用できます。このアプローチは、すべてのフォームを処理するように簡単に拡張できます。

于 2012-05-05T02:42:46.230 に答える