3

jQuery("form")[0].reset();問題は、必要に応じてフォームをリセットするために使用していることです。このメソッドはフォームを初期段階にリセットしています。ここでの初期段階とは、「フォームがいくつかの値で初めてページにロードされた段階」を意味します。

しかし、フォームを最後に保存したステージにリセットする必要があります。

私がやっていること:jQuery.ajax({----});ページを更新せずにフォームデータを保存しています。

対象とは:リクエストでフォーム データを保存した後ajax、ユーザーがフォーム内の他の値を変更したが、それを保存したくない場合、フォームを最後に保存した値にリセットすることを選択した場合。それを達成する方法は?reset();フォームを初期値にリセットするためです。

どんな助けでも大歓迎です。

ありがとうございました

4

2 に答える 2

1

皆さん、ご回答ありがとうございます。

madalin ivascuのコメントに基づいて解決策を実装しようとしました。同じことをするjsfiddleも見つかりました。いくつかの変更/変更により、必要なものが得られました。

ステップ 1:カスタム プラグインを作成します。

(function($) {
    $.fn.deserialize = function (serializedString) {
        var form = jQuery(this);
        form[0].reset();
        serializedString = serializedString.replace(/\+/g, "%20");
        var formFieldArray = serializedString.split("&");
        jQuery.each(formFieldArray, function(i, pair) {
            var nameValue = pair.split("=");
            var name = decodeURIComponent(nameValue[0]);
            var value = decodeURIComponent(nameValue[1]);

            var field = form.find("[name='" + name + "']");
            if (field[0] != undefined) {
                if (field[0].type == "radio" || field[0].type == "checkbox") {
                    var fieldWithValue = field.filter('[value="' + value + '"]');
                    var isFound = (fieldWithValue.length > 0);
                    if (!isFound && value == "on") {
                        field.first().prop("checked", true);
                    } else {
                        fieldWithValue.prop("checked", isFound);
                    } 
                } else {
                    field.val(value);
                }
            }
        });
    }
}(jQuery));

ステップ 2:シリアル化されたフォーム データをどこかに保存します。

フォームを最後に保存したステージにリセットする必要がある場合は、これを使用します。

yourForm.deserialize(serializedFormData);
于 2015-11-13T05:08:57.140 に答える
0

フォーム構造の下に、以下のようなものを言ってみましょう:

<form>
   <input type="hidden" id="recordID" value="">
   // Put your other HTML elements here
   <input type="button" id="save" value="Save">
    <input type="reset" id="reset" value="Reset">
</form>

そのイベントでajax経由でフォームを保存すると、フィールドに保存したばかりのレコードがsuccess追加されます。id#recordID

リセットボタンをクリックしたときに、トリックを実行する必要があります。

$('#reset').click(function(e){
    e.preventDefault();
   if($('#recordID').val() != '') { // if id present then form is in edit mode
        //Do an ajax call by passing id and pull all date and populate in your form fields
   } else {
       //Form is in add mode because no id is present, just reset the form
   }
});

これがあなたを助けることを願っています!

于 2015-11-12T07:22:51.907 に答える