Jqueryについての質問です。フォームのvalueを抜き取って、一回空にして、さらにもう一度元の状態に戻すコードを教えてください。


1. 複数のinputタグ、selectボックスタグ、checkbox、radiobuttonがある。
2. そこから、すべてのvalueを抜き出す。
3. すべてのvalueをリセット(空)する
4. 抜き出したvalueをもう一度セットする

最初のinputタグから抜き出して、入れるだけなら簡単にできましたが、複数種類あるフォームタグから複数個valueを取得するほうほうが分かりません。
解決につながった回答には100P以上お支払いします!

var atai = $(":input[@type='text']:first").val();
$(":input[@type='text']:first").val("");
$(":input[@type='text']:first").val(atai);

回答の条件
  • 1人2回まで
  • 登録:2008/09/04 23:22:48
  • 終了:2008/09/11 23:25:02

回答(1件)

id:Mars No.1

Mars回答回数203ベストアンサー獲得回数202008/09/05 18:03:39

ポイント60pt

multipleなselectとか同一nameのcheckboxなんかは配列を返す/配列を渡して設定できるみたいですが、

こういうケースではval()は最初の一つしか扱えないんでしょうかね?

とりあえず

var atai=new Array();
$(':text').each(function(){
	atai.push($(this).val());
// 空にする $(this).val('')
// 戻す $(this).val(atai.shift());
});

こんな風にループで処理する事はできますね。


ちょっと気になったのが、これが状態の保存と復元を目的としているならvalueだけではなくDOMのcheckedやselectedも保存しないといけないので

jQueryを使うよりform丸ごと保存、復元した方が簡単かも。

以下はページ内のフォームをまるごと保存、復元する関数のサンプルです。

var formStock = new Array();
function sample(mode){ // mode:true 保存、mode:false 復元
	var forms = document.getElementsByTagName('form');
	if(mode) {
		for(var i=0;forms[i];i++)
			formStock[i] = forms[i].cloneNode(true);
	} else {
		if(formStock.length == 0)return;
		for(var i=0;forms[i];i++)
			forms[i].parentNode.replaceChild(formStock[i],forms[i]);
	}
}

cookieに保存、cookieから復元したいとなると使えないし、

状態の保存、復元の間に入力以外の操作(プロパティをいぢるとか)が行われるような仕組みがあるときも使えない手法ですが。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません