Желая иметь возможность опроса нескольких человек, затем обновить и т.д. Необходимо, чтобы несколько человек могли хранить опрос на основе их имени, поэтому каждый результат опроса не перезаписывается при повторном представлении. Попытка получить ключи, хранящиеся для каждого текстового поля, выводит "человек". "Name" = значение. вместо этого im получает значение undefined.name =
<p>
<label>Name:</label> <input name="MainName" type="text"/>
</p>
$('form').submit(function() {
var person = $("#MainName").val();
$('input, select, textarea').each(function() {
var value = $(this).val(),
name = $(this).attr('name');
localStorage[person + "." + name] = value;
console.log('stored key: '+name+' stored value: '+value);
});
});
Если проблема не показывает выше, вот все: http://jsfiddle.net/5sG8v/
Вы получаете undefined
возвращенный, потому что вы пытаетесь ссылаться на ID, который не существует: MainName
- это name
вашего поля ввода, а не id.
Дайте ему идентификатор MainName
или что-то, что щекочет ваше воображение:
<label>Name:</label> <input id="MainName" name="MainName" type="text"/>
Вы использовали $("#MainName").val();
для получения значения элемента с идентификатором MainName
. #
используется для доступа к элементу с идентификаторами, но вы не определили этот идентификатор в html.
Поэтому определите атрибут ID текстового поля следующим образом:
<label>Name:</label> <input id="MainName" name="MainName" type="text"/>
Элемент #
предназначен для выбора элементов с заданным атрибутом id
. У вашего input
нет id
.
Вы можете указать элементу id
или выбрать на основе атрибута name
:
$('input[name="MainName"]');