2013-09-24 10 views
0

У меня есть форма, на которой есть 20 переключателей. Мне нужно сохранить состояние переключателей, если на странице есть ошибки (при этом страница будет обновляться). Мне удалось заставить его работать на 50%. Однако, если я выбираю разные переключатели во втором обновлении, он все равно сохранит состояние первого представления.Как сохранить состояние переключателя ввода после обновления страницы

Вот мой код:

var x= $("input[id^='question-']"); 
    $(x).click(function(){ 
    localStorage['radios'] = this.checked; 
    }); 

    $(x).prop('checked', localStorage['radios'] == 'true'); 

Любая помощь будет очень признателен!

+0

Обычно сервер устанавливает состояние радиосвязи перед обращением к странице. –

+0

вы можете использовать файлы cookie для сохранения массива списка, который будет содержать 0 и 1 для каждого из переключателей соответствующих индексов. – Shadow

+0

. Я предпочитаю использовать локальное хранилище для простоты. Возможно, мне понадобится небольшая настройка из приведенного выше кода. Спасибо – Wasiim

ответ

0

Я думаю, что уникальная форма получения значений после обновления страницы отправляет информацию с помощью POST или GET после отправки формы. Это рекомендуется с помощью PHP-скрипта для обработки формы и проверки.

Если у вас есть какие-либо сомнения, вы можете увидеть здесь how to catch information of the forms

+0

Я ограничен для использования JS, и код работает на платформе asp.net. Спасибо – Wasiim

+0

Хорошо, но я понимаю, что вам нужно отправить форму на любую страницу сценария нет? и вы каким-либо образом должны обрабатывать всю информацию в форме, нет? вы можете сделать одну и ту же страницу формы, метод действия формы может быть form.asp, а при возврате информации сделайте всю проверку. Я разработчик PHP, но эта ссылка, я думаю, может помочь [self refering forms] (http://www.codefixer.com/tutorials/self_referencing_forms.asp) – hades87

+0

Спасибо за помощь ... но использование localstorage кажется более простым:) – Wasiim

0

Ваш код выглядит его просто перезапись то же значение снова и снова, независимо от того, что ввод его для, а также следует использовать событие изменения, а не нажать кнопку. Попробуйте что-то вроде (непроверено):

var $x = $("input[id^='question-']"); 

// Set localstorage on change event per radio button 
$x.on('change', function(){ 
    localStorage[$(this).attr('name')] = this.checked; 
}); 

// Check all radio buttons on page load against localStorage 
$x.each(function(){ 
    $(this).prop('checked', localStorage[$(this).attr('name')] == 'true'); 
} 
+0

код, похоже, не работает .. – Wasiim

+0

и зачем использовать имя attr? если id доступен? – Wasiim

Смежные вопросы