function hiliter(word, element) {
var rgxp = new RegExp(word, 'g');
var repl = '<span class="myClass">' + word + '</span>';
element.innerHTML = element.innerHTML.replace(rgxp, repl);
}
hiliter('dolor');
После короткой проверки источников jQuery UI Datepicker решение состоит в том, чтобы просто запустить событие изменения самостоятельно
...
onSelect: function(dateText, inst) {
var theDate = new Date(Date.parse($(this).datepicker('getDate')));
$("#<%=txtEndDate.ClientID %>").datepicker('option', 'minDate', theDate);
if (inst.input)
inst.input.trigger('change');
}
...
Причиной этого являются следующие строки в исходном коде jQuery UI Datepicker
if (onSelect)
// trigger custom callback
onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);
else if (inst.input)
// fire the change event
inst.input.trigger('change');
Как видите, jQuery UI Datepicker запускает событие change
по умолчанию, если экземпляр datepicker является полем input
, но не запускает его, если вы указали пользовательское onSelect
обработчик (как и вы).
Вы можете возразить, что на самом деле это правильное поведение, поскольку оно гарантирует вам максимальную настраиваемость. Вы можете решить, хотите ли вы, чтобы событие change
происходило или нет.
Но я согласен, что такое поведение, возможно, следует задокументировать.
Вы можете просто добавить
$ ( '<% = txtStartDate.ClientID%>'). trigger ('change');
до конца onSelect
функции. Рассмотрим следующий рабочий пример:
http://jsbin.com/oqunu/ или отредактируйте версию http://jsbin.com/oqunu/edit
Или переместите логику в функции, запускаемые TextChanged, и избавьтесь от onSelect. Как здесь: http://jsbin.com/iyajo ; редактировать версию http://jsbin.com/iyajo/edit