1

最初に、フォームには次のようなフィールドが含まれる場合があります。

<input type="text" name="Age" value="" />

とにかく、34 の値を入力します。

簡単に言えば、AS LAST STATE という形式のキャッシュされたスナップショットを次のように保存したいと考えています。

<script language="JavaScript">
document.getElementById('cached').value=document.getElementById('form1').innerHTML;
</script>

ただし、私が得ている結果は次のとおりです。

<input type="text" name="Age" value="" />

vs. 値が 34 の場合:

<input type="text" name="Age" value="34" />

「ライブ」のinnerHTMLを取得する方法はありますか? ここでは確かにjQueryソリューションを受け入れます。ありがとう!

4

2 に答える 2

0

jquery でも同じ結果が返されます。ここでちょっとしたトリックを行う必要があります。フィールドに入力するときに、実際には html 独自の値を設定しないためです。

var snapshot = $('#field_ID').clone();
var ssv = $('#field_ID').val();
var snapshot = snapshot.attr('value' , ssv);

今あなたが使うなら

$('body').append(snapshot);

値を持つフィールドを取得します。

いつスナップショットを撮るか

これらのスナップショットを取得するタイミングを知る最善の方法は、ユーザーが箱から出してすぐに集中するときです

$('#field_ID').focusout(function(){
    var snapshot = $(this).clone();
    var ssv = $(this).val();
    var snapshot = snapshot.attr('value' , ssv);
    $('body').append(snapshot);
})
于 2013-10-11T22:18:58.087 に答える
0

@all、これが私のために働いたものです:

//http://stackoverflow.com/questions/1388893/jquery-html-in-firefox-uses-innerhtml-ignores-dom-changes
(function($) {
  var oldHTML = $.fn.html;

  $.fn.formhtml = function() {
    if (arguments.length) return oldHTML.apply(this,arguments);
    $("input,button", this).each(function() {
      this.setAttribute('value',this.value);
    });
    $("textarea", this).each(function() {
      // updated - thanks Raja & Dr. Fred!
      $(this).text(this.value);
    });
    $("input:radio,input:checkbox", this).each(function() {
      // im not really even sure you need to do this for "checked"
      // but what the heck, better safe than sorry
      if (this.checked) this.setAttribute('checked', 'checked');
      else this.removeAttribute('checked');
    });
    $("option", this).each(function() {
      // also not sure, but, better safe...
      if (this.selected) this.setAttribute('selected', 'selected');
      else this.removeAttribute('selected');
    });
    return oldHTML.apply(this);
  };

  //optional to override real .html() if you want
  // $.fn.html = $.fn.formhtml;
})(jQuery);

これにより、フォーム配列ではなく、送信時のデータに変更を加えたフォームの「innerHTML」が得られます。これは、フォームを特定の時点の状態にすばやく簡単に再作成する方法です (必要に応じてスナップショットを作成します)。これを多段階プロセスで使用して、データベースに触れたり、大規模な PHP 処理を必要とせずに、ユーザーがすばやく「戻る」ボタンを選択できるようにします。

于 2013-10-16T08:43:57.367 に答える