2017-05-23 8 views
0

これはWebアプリケーションです。 Textareaボックスのユーザータイプ情報。 情報はlocalStorageに格納されます。 現在、ユーザーは情報を保持するために「OK」ボタンをクリックする必要があります。 情報が自動的に保存されることを希望します。セーブボタンなしでユーザーのテキスト入力を取得して保存する

これを行う適切な方法は何ですか?

+0

「ベスト」は、評価の基準を示します。通常は試していますが、表示されていません。 – RobG

+0

それはかなり主観的です。最も一般的な方法は、定期的な間隔でajaxリクエストを送信することです。 60秒ごとまたは2分ごとなど、この情報をサーバーに保存します。または、ウェブソケットを使用して情報をサーバーにプッシュすることもできます。 –

答えて

0

あなたはlocalstorageにデータを保存することを意味しますか?そうだとしたら、テキストエリアのすべてのキー入力時にローカルストレージの内容を更新することができます。 jQueryのなし

$("#myTextarea").keypress(function(){ 
    window.localStorage.setItem("textAreaContent", $(this).val()); 
}); 
0

、更新、我々はブラウザのテキストの変更がすべて(あるいはほとんど)のために捕獲されていることを確認する必要があるので、我々はtextarea要素に複数のリスナーを添付することができますテキストが変更されるたびにローカルストレージに保存されます。 textInput eventkeydown, keypress, keyupと例を参照して、キャプチャの変更、イベントに関する

function onTextChange(obj) { 
    var elem = obj.target; 

    // If text has changed, update local-storage and save the saved 
    // value with the element for later checking w/o having to read 
    // from local-storage. 
    if (elem.old_value !== elem.value) { 
     elem.old_value = elem.value; 
     window.localStorage.setItem("textEntry", elem.value); 
     console.log('saved',elem.value); 
    } 
    return false; 
} // onTextChange() 

var elem=document.getElementById('textinput'); 
if (elem.addEventListener){ 
    elem.addEventListener('input',onTextChange.bind(elem),false) 
    elem.addEventListener('keyup',onTextChange.bind(elem),false) 
    elem.addEventListener('change',onTextChange.bind(elem),false) 
} 
else if (elem.attachEvent) { 
    elem.attachEvent('onpropertychange', onTextChange.bind(elem)) 
} 

詳しい情報。

+0

ありがとうございます。パフォーマンス上の問題にかかわらず、互換性の安全面のため。変更があり保存しているかどうかを確認するのに100msタイマーを使用する方が良いでしょうか? – yaron89

+0

タイマーの遅延がどのように役立つか分かりません。人がどのくらい素早くタイプするかは分かりません。すべての処理がローカルで行われているので、何も負担がかかりません。実際には、「古い」値をチェックして保存することで、不要な複雑さを導入しました。私は関係なく、現在の値を保存しておく必要があります。 – wrlee

関連する問題