Проблема с sessionStorage с `checkbox` и `radio`

185
14 июля 2017, 06:17

Помогите понять в чем проблема и как исправить. Для сохранения данных введенных в форму используется следующий код:

$('[name *= "pdata_ch_"]').each(function () { 
	if (sessionStorage.getItem(this.name)) { 
	this.value = sessionStorage.getItem(this.name); 
} 
	switch (this.type) { 
			case 'text': 
				this.addEventListener("keyup", function() { 
					sessionStorage.setItem(this.name, this.value); 
					 
					console.log("---- text ----"); 
				}); 
				break; 
			case 'radio': 
				this.addEventListener("change", function() { 
 
					sessionStorage.setItem(this.name, this.value); 
					console.log("---- radio ----"); 
					console.log(this.value); 
				}); 
				break; 
			case 'select-one': 
				this.addEventListener("change", function() { 
					sessionStorage.setItem(this.name, this.value); 
					 
					console.log("---- select-one ----"); 
				}); 
				break; 
			case 'checkbox': 
				this.addEventListener("click", function() { 
					console.log(this.type); 
					sessionStorage.setItem(this.name, this.value); 
					console.log("---- checkbox ----"); 
					console.log(this.value); 
				}); 
				break; 
			default : 
			this.addEventListener("keyup", function() { 
				console.log(this.type); 
					sessionStorage.setItem(this.name, this.value); 
					 
					console.log("---- default ----"); 
				}); 
				break; 
			} 
});

Проблема с checkbox и radio, почему-то подменяется value (становится одинаковым) и не ставится checked.
Изначально:

<div class="row-fluid"> 
	<div class="fabrikgrid_radio span1"> 
		<label class="fabrikgrid_0 radio"> 
			<input type="radio" class="fabrikinput " name="pdata_ch___gender[]" value="0"> 
			<span>М</span> 
		</label> 
	</div> 
	<div class="fabrikgrid_radio span1"> 
		<label class="fabrikgrid_1 radio"> 
			<input type="radio" class="fabrikinput " name="pdata_ch___gender[]" value="1"> 
			<span>Ж</span> 
		</label> 
	</div> 
</div>

После обновления страницы:

<div class="row-fluid"> 
	<div class="fabrikgrid_radio span1"> 
		<label class="fabrikgrid_0 radio"> 
			<input type="radio" class="fabrikinput " name="pdata_ch___gender[]" value="0"> 
			<span>М</span> 
		</label> 
	</div> 
	<div class="fabrikgrid_radio span1"> 
		<label class="fabrikgrid_1 radio"> 
			<input type="radio" class="fabrikinput " name="pdata_ch___gender[]" value="0"> 
			<span>Ж</span> 
		</label> 
	</div> 
</div>

READ ALSO
Проблема с element.checked

Проблема с element.checked

ЗдравствуйтеСтолкнулся с проблемой проверки на то выбран ли элемент type radio

158
Как убрать название сайта из блока &ldquo;Поделиться&rdquo;? [требует правки]

Как убрать название сайта из блока “Поделиться”? [требует правки]

Как убрать название сайта из блока "Поделиться"?

182
сравнение строк &ldquo;2&rdquo; &gt; &ldquo;15&rdquo; = true

сравнение строк “2” > “15” = true

Прочитал мануал по поводу строк: Посимвольное сравнение

189
Как правильно вызвать функцию при ajax?

Как правильно вызвать функцию при ajax?

При клике на блок с классом main-block ajaxом добавляются элементыФункция, которая отрабатывает при клике на элемент, который добавляется ajax

170