jQuery live span не обновляется до второго клика - PullRequest
0 голосов
/ 10 августа 2011

Чтобы проверить это, перейдите на http://offline.raileisure.com/

в правой части раздела бронирования, выберите станцию ​​мастеров, затем выберите дату регистрации заезда 15 августа. затем выберите 4 дня ...

OK

Теперь вернитесь и выберите другую дату 29 августа.

4 дня должны отменить выбор, но это не произойдет, пока вы не сделаете еще один щелчок в другом месте ...

Я думаю, что мне нужно обновить live attr. но не уверен.

чтобы убрать галочку #spanduration Я использую:

$('input[name="duration"]').removeAttr('checked');
$("#spanduration").attr("style", "background-position: 0px 0px;");

но он не работает, пока вы не сделаете второй щелчок в любом месте.

Ответы [ 2 ]

0 голосов
/ 10 августа 2011

Событие изменения не срабатывает при вводе текста до тех пор, пока ввод не будет размытым.

Вы можете попытаться вручную смазывать ввод после заполнения даты (не очень хорошо для доступности).Или, что еще лучше, вручную запустите событие изменения после заполнения даты.например,

//...
// After date is populated
$('#date').trigger('change');
//...

См. полный пример здесь: http://jsfiddle.net/irama/rJGpn/

РЕДАКТИРОВАТЬ : Глядя на ваш код, кажется, что есть возможность (когда вы создаете экземпляр средства выбора даты)чтобы вставить это в функцию обратного вызова:

$('#date').datepicker({
    // ...
    onSelect: function (e) {
        // ...

        $('#date').trigger('change');
    }
    // ...

Дайте нам знать, как вы идете!

0 голосов
/ 10 августа 2011

Может быть, это потому, что это радио-кнопка.

Попробуйте изменить его на флажок?

Радио-кнопка не хочет, чтобы ее не отмечали, если ни один другой не отмечен:

<input type="radio" value="0" name="duration">
<input type="radio" value="1" name="duration">
<input type="radio" value="2" name="duration">
<input type="radio" value="3" name="duration">

И автономно

<input type="radio" value="0" name="other_name">

С другой стороны, флажки не снимаются друг с другом: (обратите внимание, что имя является массивом)

<input type="checkbox" value="0" name="duration[]">
<input type="checkbox" value="1" name="duration[]">
<input type="checkbox" value="2" name="duration[]">
<input type="checkbox" value="3" name="duration[]">

И автономно

<input type="checkbox" value="0" name="other_name">

Вы можете написать что-то вроде этого, чтобы иметь возможность автономного флажка, а также сладость сгруппированных переключателей: http://jsfiddle.net/LJJrZ/

$(document).ready(function(){
    var selector = "input[type=checkbox]";
    $(selector).click(function(event){
        var checked = $(this).is(':checked');
        if ( checked ) {
            $(selector).attr("checked", false);
            $(this).attr("checked", true);
        }
    });
});
...