Кодинг

Скрипт не реагирует на программные изменения поля INPUT (решение)

Разрабатывая сайт для клиента, столкнулся с неприятной ситуацией — jquery скрипт отказывался отлавливать изменение текстового input-a, который изменялся сторонним скриптом (автозаполнение). Обычно, подобные проблемы решаются элементарным jQuery(‘body’).on(‘change’, ‘.buttom_update’, function(){, однако, в моем случае подобная конструкция не приносила результата, тогда, погуглив, нашел решение http://jsfiddle.net/VHgkN/21/ , однако, его также пришлось допиливать. В результате у меня вышло следующее:

(function($){
/* код ниже включает отлавливание */
var oldVal = $.fn.val;
$.fn.oldVal = oldVal;
$.fn.val = function(value){
    if(!value)
        return this.oldVal();
    else {
        return this.each(function(){
        $(this).oldVal(value);
        $(this).change();
        });
    }
};
/* end код ниже включает отлавливание */
$(document).ready(function(){
    $(‘#calendar’).change(function(){
    /* Тут обработчик события */
    });
});

Сам html код инпута выглядел так:

<div class="sobytiya-navbar">
<input id="calendar" name="date" value="Выбор даты" type="text" /></div>
</div>

На него я «вешал» jquery календарь simpleDatepicker. Т.е. при клике на инпут под полем появлялся календарик, в котором человек выбирал необходимую ему дату.


Рейтинг:

2017-02-03 | | 0 комментариев | ,

Альтернативный заголовок изображения

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *