これを複数の方法で解決しようとしました。1.通常のhtmlの「チェック済み」デフォルトオプションをフォームのラジオボタンに追加するだけで、2.js関数にそれを実行させ、試行したアイデアの要点です。
問題: どのように行っても、(ユーザーが選択する前に) ラジオがデフォルトでチェックされているように指定されている場合、それ以降に行われたものはすべて (あったとしても) 正しく保存されないことがわかりました。ローカルストレージ。localStorage は最初のデフォルトの選択を保存しますが、それ以降は何も変更できません (「物理的に」別のオプションを選択した後でも)。
デフォルトの指定 (および残りの入力) を省略した場合、localStorage は完全に機能するため、localStorage が機能していることはわかっています。
フォームコード:
<label>Who is the contact person for this event?<span class="requiredtext">*</span></label>
<input type="radio" name="Contact_Person" id="Contact_Person1" value="Submitter is the contact person" onclick="contacthide()" checked required> I am<br />
<input type="radio" name="Contact_Person" id="Contact_Person2" value="Submitter is not the contact person" onclick="contactshow()" required>
localStorage 保存コード:
function localStoragefunctions() {
localStorage.clear();
if (Modernizr.localstorage) {
//Set variable to show that data is saved
localStorage.setItem("flag", "set");
//Save radio and checkbox data
$(window).bind('unload', function() {
$('input[type=radio]').each(function() {
localStorage.setItem('radio_' + $(this).attr('id'), JSON.stringify({
checked: this.checked
}));
});
});
ユーザーが最終的な送信前に変更を加えるために戻った場合に、それを吐き出すコード:
$(document).ready(function() {
if (Modernizr.localstorage) {
//Browser supports it
if (localStorage.getItem("flag") == "set") {
$('input[type=radio]').each(function() {
var state = JSON.parse(localStorage.getItem('radio_' + $(this).attr('id')));
if (state) this.checked = state.checked;
});
これ以外に、localStorage に格納されているすべての変数を取得し、ユーザーが完全に送信する前に最終検査のためにそれらを提示する確認ページがあります。
それは次のもので構成されています: var ContactPerson = localStorage.getItem('Contact_Person');
そして、document.write
html と変数の値を吐き出す a。繰り返しますが、デフォルトのラジオの選択肢を設定しようとしない場合、これはうまく機能します (そして、他のすべての入力タイプに対してうまく機能します)。
理想的な結果は、ユーザーの時間を節約できるように、デフォルトで最も可能性の高いラジオ ボタンの選択肢を選択することです。事前に「決定を下す」ことができるのであれば、各ラジオボタンを物理的にクリックする必要があるフォームを提示する必要はありません。
これがすべて理にかなっていることを願っています!