Как я могу использовать функцию .Live () jQuery с датой выбора JQery UI? - PullRequest
1 голос
/ 26 марта 2011

У меня есть средство выбора даты (локализовано на испанский):

$(document).ready(function () {
    $("#datepicker").datepicker(
        { dateFormat: 'dd/mm/yy',
            dayNamesMin: ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'],
            monthNames: ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo',
                'Junio', 'Julio', 'Agosto', 'Septiembre',
                'Octubre', 'Noviembre', 'Diciembre'],
            monthNamesShort: ['Ene', 'Feb', 'Mar', 'Abr',
                'May', 'Jun', 'Jul', 'Ago',
                'Sep', 'Oct', 'Nov', 'Dic'],
            onSelect: function (dateText, inst) {
                var form = $(form);
                $.ajax({
                    url: "/Trabajo/",
                    type: "POST",
                    data: { dia: dateText },
                    success: function (result) {
                        $('#trabajos').replaceWith($('#trabajos', $(result)));
                    }
                });
                return false;
            }
        });
});

Работает отлично, обновляет div #trabajos с новой информацией, но dom не обновляется.Я знаю, что .live () для этого, но, как jquery noobish, как я могу изменить этот код для реализации живой функции?

Спасибо.

PS: Если есть asp.net mvc guy, если моя форма имеет вид:

@using (Ajax.BeginForm("/Trabajo/", new AjaxOptions { UpdateTargetId = "trabajos" }))

Почему я должен вручную обновить его в функции успеха?

1 Ответ

0 голосов
/ 26 марта 2011

Попробуйте так:

$(document).ready(function () {
    attachDatePicker();
});

function attachDatePicker() {
    $('#datepicker').datepicker({ 
        dateFormat: 'dd/mm/yy',
        dayNamesMin: ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'],
        monthNames: ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'],
        monthNamesShort: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'],
        onSelect: function (dateText, inst) {
            var form = $(form);
            $.ajax({
                url: '/Trabajo/',
                type: "POST",
                data: { dia: dateText },
                success: function (result) {
                    $('#trabajos').replaceWith($('#trabajos', $(result)));
                    // reattach the datepicker if you updated 
                    // the corresponding DOM element
                    attachDatePicker();
                }
            });
            return false;
        }
    });
}

Примечание: никогда не используйте жесткие коды URL в файлах JavaScript, как вы делали это в свойстве url вашего вызова AJAX.Всегда URL помощники.Поэтому вместо:

url: '/Trabajo/'

используйте:

url: '@Url.Action("Index", "Trabajo")'
                     ^         ^
                  action    controller
...