可変数の入力 (テキスト、非表示) とドロップダウン (それぞれに ID、名前、および/または 1 つ以上のクラスがある場合があります) を含む div があります。
この div は時々リロードされ、新しい入力が追加されたり、古い入力が削除されたりする場合があります。
私がやろうとしているのは、現在の値をサーバーに渡すことなく、各リロードの前に入力または選択された値を維持することです。
このコードは、選択フィールドを除いて、必要なことをほとんど実行します-値を取得しません。これが機能したら、その配列をシリアル化してどこかに保存し、デコードして繰り返し、値を書き戻すことができます。
function getAllValues() {
var inputValues = [];
$jq('#slip input').each(function() {
var type = $jq(this).attr("type");
if ((type == "checkbox" || type == "radio") && $jq(this).is(":checked")) {
inputValues.push([ getIdentifier($jq(this)), $jq(this).val()]);
}
else if (type != "button" || type != "submit") {
inputValues.push([ getIdentifier($jq(this)), $jq(this).val()]);
}
})
$jq('#slip select').each(function() {
var type = $jq(this).attr("type");
if (type != "button" || type != "submit") {
inputValues.push([ getIdentifier($jq(this)), $jq(this).val()]); // problem!
}
})
return inputValues;
}
そのような問題に対する入力またはおそらくより洗練された解決策をいただければ幸いです。
後で編集: Benjamin は、問題を非常にうまく解決した jquery serialize() へのリンクを投稿するのに十分親切でした。他の誰かがそれで保存された値を復元するために少しのコードを必要とする場合:
function restoreSlipValues(){
var tickets_data = decodeURIComponent($jq("#temporary-values").val()).split("&");
console.log(tickets_data);//.split("&");
$jq(tickets_data).each(function(){
if (this.split("=")[0] !="authenticity_token" && this.split("=")[0].indexOf("_win") < 0 && this.split("=")[0].indexOf("winning") < 0) {
$jq("form#ticks input[name=\"" + this.split("=")[0] + "\"]").val(this.split("=")[1]);
$jq("form#ticks select[name=\"" + this.split("=")[0] + "\"]").val(this.split("=")[1]);
}
});
}