2012-07-03 6 views
5

jQueryを使用してHTMLページのデータを読み込みます。そのページには、ユーザが値を入力するための<input>タグを含む<form>要素があります。
初期化されるとき、このフォームには、<input>要素のいくつかのデフォルト値があります。このフォームを送信すると、html()メソッドを使用してこのページの現在の状態のHTML文字列を取得しますが、この結果文字列には新しい値ではなく古い値(デフォルトの入力値)が含まれているわけではありません。
html()を呼び出す前に、ユーザーが入力した値を<input>要素に更新または保持する方法はありますか?どのようにjQueryメソッドを使用して最新の値を含む文字列を取得できますか?
ありがとうございました!jQuery:html()関数は古いデータをフォーム形式で取得します

+2

あなたのコードです...! –

+0

*なぜこのページ*の現在の状態のHTML文字列を取得する必要がありますか? – VisioN

+0

なぜ、ページ全体を取得するためにhtmlを使用していますか、奇妙に思えます。あなたはそれがあなたの後になっている場合は、シリアル化を使用してフォームからすべての値を選択することができるはずです。 –

答えて

5

しかし、あなたがしようとしているのは奇妙ですが、必要なのはフォーム要素のvalue属性を更新することだけです。これは、(フォームsubmitハンドラに入れて)次のコードで行うことができます。

$("form input").attr("value", function() { 
    return this.value; 
}); 

DEMO:デフォルトではhttp://jsfiddle.net/BXha6/

+0

ありがとうございました。実際、あなたの提案は私がこの問題を解決するのに役立つものではありませんでしたが、それは私に進むための手がかりを与えました。 jsfiddleで作成したデモを試しましたが、jQuery 1.7.1で動作しましたが、1.5.2にダウングレードするとエラーが発生しました^ _ ^。ですから、jQuery 1.5.2には、それをもっと深く研究するという不思議なものがあるかもしれません。あなたのヒントを別の方法で適用しました: '$("フォーム入力 ")。attr( "defaultValue"、function(){ return this.value; }); ' これは素晴らしい機能でした! –

2

jQueryのhtml()機能ではなく、使用するよりもdefaultValuedefaultChecked特性を保存します現在の値/選択肢(JavaScript innerHTMLのように)この問題を回避するには、まずjQuery prop()Read the Documentation on prop()を使用する必要があります。コード指定されたインスタンスの場合

、:

<form action='/'> 
    <input type='radio' value='1' checked name='first' /> 
    <input type='radio' value='2' name='first' /> 

    <input type='checkbox' value='yes' /> 

    <input type='text' value='Start Text' name='second' /> 
</form> 

はその後

$('form').html() 

は常に出力正確なコードは、関係なく、あなたが選択/追加した値が何の/修正すること。

だけプロパティに要素の値を変換する機能を実行し、これを解決するには、次の

$("form input[type='radio']").each(function(){ 
    if (this.checked){ 
     $(this).prop("defaultChecked",true); 
    } else { 
     $(this).prop("defaultChecked",false); 
    } 
}); 
$("form input[type='checkbox']").each(function(){ 
    if (this.checked){ 
     $(this).prop("defaultChecked",true); 
    } else { 
     $(this).prop("defaultChecked",false); 
    } 
}); 
$("form input[type='text']").each(function(){ 
    $(this).prop("defaultValue",$(this).val()); 
}); 

alert($(form).html()); //or var the_code = $(form).html(); 

あなたの現在のページの状態が表示されるようになりましたHTMLを持っています。あなたがその要素の型を行う方法を探していた場合