поймать изменение текста в поле ввода - PullRequest
3 голосов
/ 16 февраля 2012

Я использую календарь Joomla, чтобы выбрать дату. Ниже показан HTML-код этого. здесь, когда вы щелкаете изображение, появляется календарь, и вы можете выбрать дату, всплывающее окно закроется, и значение даты отобразится в поле ввода текста. Что я хочу, так это то, что я хочу написать функцию для создания ajax-сообщения, если дата меняется (изменение входного текста). Я попробовал простое оповещение (), но не сработало. Я думаю, что это связано с потерей фокуса на текстовом поле, потому что только изображение, на которое мы нажимаем, и отсутствие контакта с полем ввода с помощью мыши или нажатия любой клавиши. Пожалуйста, помогите мне решить эту проблему.

$("#select_date").change(function(){
   alert('Working');
});

HTML-код

<input id="select_date" type="text" value="2012-02-16" name="select_date" title="Thursday, 16 February 2012">
<img id="select_date_img" class="calendar" alt="Calendar" src="/eap_movies/media/system/images/calendar.png">

Код PHP

JHTML::_('behavior.calendar');
JHTML::calendar(date('Y-m-d'),'select_date', 'select_date', '%Y-%m-%d');

Ответы [ 3 ]

2 голосов
/ 16 февраля 2012

Календарь DHTML Михая Базона v1.0 (в /media/system/js/calendar.js) есть обратный вызов для событий onSelected и onClose.Так что должна быть возможность ловить, когда календарь закрывается или когда пользователь выбирает дату.

Решение 1 - Редактирование Joomla

Шаг 1 - Вам необходимо переопределить этоfile: libraries/joomla/html/html.php

// added $onSelected parameter
public static function calendar($value, $name, $id, $format = '%Y-%m-%d', $attribs = null, $onSelected)
{
  ...
$document->addScriptDeclaration('window.addEvent(\'domready\', function() {Calendar.setup({
            inputField: "'.$id.'",          // id of the input field
            ifFormat: "'.$format.'",        // format of the input field
            button: "'.$id.'_img",          // trigger for the calendar (button ID)
            align: "Tl",                            // alignment (defaults to "Bl")
            singleClick: true,
            onSelected: '.$onSelected.'
});});');
...
}

Шаг 2 - Определение обратного вызова для onSelected

JHTML::_('behavior.calendar');
JHTML::calendar(date('Y-m-d'),'select_date', 'select_date', '%Y-%m-%d', null, 'userSelectedDate');

Шаг 3 - Реализация обратного вызова

function userSelectedDate(calendar, date){ ... }

Примечание: У меня нет активной установки Joomla, поэтому приведенный выше код может содержать синтаксические ошибки.

Решение 2. Более простое решение Сары

Добавить onchange определение $attribs параметра JHTML::calendar:

JHTML::calendar(date('Y-m-d'),'select_date', 'select_date', '%Y-%m-%d','onchange="myfunction();"');

Посетите Веб-сайт DHTML-календаря .

2 голосов
/ 16 февраля 2012

Событие изменения будет срабатывать только при плохой фокусировке ввода (размытие).

Вы можете смотреть события нажатия клавиш, нажатия клавиш или нажатия клавиш, если это возможно, или запускать событие при выборе даты.

1 голос
/ 16 февраля 2012

Какую версию jquery вы используете?У меня была та же проблема, и я пошел с

$('elementName').on("input propertychange",function() {
 alert("detected");
});

Потому что работа с событиями keyup не будет работать в вашем случае, потому что на самом деле взаимодействие пользователя с полем отсутствует.

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