У меня возникла проблема с объектом, который я пытаюсь изменить. Объект имеет определенное количество ключей в формате key_yyyy-mm-dd
. Когда определенные поля ввода теряют фокус, я запускаю функцию для изменения объекта. Эта функция выглядит следующим образом:
function updateHotelBooking()
{
$(".no_hotel").each(function(i) {
var day = $(this).attr('name').match(/\[(.*?)\]/)[1];
hotelBooking["key_" + day] = parseInt($(this).val());
});
}
.no_hotel
- это текстовые поля, запускающие функцию, и они также предоставляют значение, которое я хочу поместить в мой объект.
Теперь, скажем, я поставил 3
в моем первом текстовом поле, console.log
вернет следующий объект:
Object
key_2011-08-21: 3
key_2011-08-22: 0
key_2011-08-23: 0
key_2011-08-24: 0
key_2011-08-25: 0
Однако в следующий раз, когда я помещаю что-либо в текстовое поле (или другое текстовое поле, которое должно вызывать функцию), оно срабатывает, однако возвращаемый объект остается прежним. Таким образом, вместо того, чтобы изменить первое число, скажем, на 5, оно просто вернет 3 снова.
Понятия не имею, почему. Мой код кажется довольно простым, и console.log
из day
и $(this).val()
возвращает правильные значения. Это просто мой объект, который не обновляется.
У кого-нибудь есть идеи? Большое спасибо!
EDIT:
hotelBooking
инициализируется сразу после $(document).ready()
:
var hotelBooking = {};
Метод, который вызывает updateHotelBooking, следующий:
$(".roomrequest").blur(function()
{
updateHotelBooking();
});
EDIT2: JSFiddle: http://jsfiddle.net/pBYeD/2/