Проблемы интеграции JQuery UI DatePicker в приложении AJAX - PullRequest
0 голосов
/ 05 сентября 2010

Я работаю над приложением на основе ajax и пытаюсь добавить указатель даты jquery (и его расширение timepicker) к нескольким формам. Они обеспечивают только ту функциональность, которая мне нужна. Основная проблема, с которой я столкнулся сейчас, заключается в том, чтобы справиться с ситуацией, когда DOM не завершен или лучше запущен в приложении (нажатие кнопки редактирования или добавления) для создания формы. Таким образом, интеграция DatePicker не легкая задача (или?). Я не могу использовать функцию готовности документа, потому что к тому времени, когда загрузка уже завершена, формы, содержащие элементы datepicker, отсутствуют после загрузки. Поэтому я подумал, что оберну вызов datepicker в функцию, запускающую его через onclick, например:


var dp=function(divname, btimeonly) {
    // --- if timeonly, use the datetimepicker ui extension otherwise the ui datepicker
    var tonly = (btimeonly) ? true : false;
    if (tonly) {
        return $('#' + divname).datetimepicker({
            timeFormat: 'hh:mm',
            timeOnly: true
        });
    } else {
        $.datepicker.setDefaults($.datepicker.regional['']);
        $('#' + divname).datepicker($.datepicker.regional['de']);
        return $('#' + divname).datepicker({ });
    }
};

поле ввода выглядит так


<input type="text" id="newsdate" name="newsdate" maxlength="10" value="' . $data['newsdate'] . '" style="width:200px" onclick="dp(\'newsdate\', false);">

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

Я застрял сейчас, есть ли способ вызвать DatePicker одним щелчком мыши, даже в моей среде AJAX.


showOn: 'button',
buttonImage: 'images/icon-calendar.gif',
buttonImageOnly: true,

невозможно, конечно, не так, как я называю средство выбора даты.

Могу ли я загрузить сборщик другим способом и где мне это сделать? Или это просто потеря времени при использовании jquery в среде, сгенерированной ajax, и мне следует использовать встроенные функции javascript? Я не надеюсь на последнее, потому что мне очень нравится jquery и его функциональность. Так много раз я использовал его в других приложениях. Поэтому загрузка, селекторы и идентификаторы элементов (и их валидность) в моей среде, сгенерированной ajax, - это проблема, которую я хотел бы решить.

Любые намеки очень ценятся. Я пытался прочитать подобные проблемы здесь на stackoverflow, но, похоже, не нашел решения.

Спасибо! Andreas

1 Ответ

0 голосов
/ 05 сентября 2010

Что ж, после еще нескольких поисков я сам нашел решение, которое смогу использовать.Я работаю с классом php / xajax, есть метод addScript () объекта ответа, который позволяет выполнять javascript.Теперь я могу обернуть весь код, связанный с jquery, в функцию javascript, и функция будет выполнена, как только будет выполнен объект ответа.

Так в php ...


...
$responseObj->addScript("finit()");
...

и функции javascriptкак ...


function finit() {
    $('#newsdate').click(function() {
        $(this).datepicker( {} )
    });
};

Вот и все.На всякий случай, если кто-то застрянет в той же точке.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...