В моем приложении MVC 2 у меня много представлений с множеством полей ввода. Многие из них содержат переменные DateTime.
Я использую плагин datepicker jQuery, чтобы помочь пользователю выбрать дату. Это также позволяет мне делать следующее в моей MasterPage:
$(document).delegate(".hasDatepicker", "keyup", function () {
this.value = this.value.replace(/[^0-9\.\/]/g, '');
});
Это исключает использование пользователями неправильных символов, если они предпочитают печатать. Поскольку Datepicker добавляет свой собственный класс к элементам datepicker, я смог не использовать этот класс для автоматической очистки ввода.
Никаких проблем здесь, это та часть, которая работает так, как должна.
Проблема, однако, заключается в том, что при открытии представления «Редактирование» текстовое поле заполняется «21/05/2012 0:00:00». Как только вы начинаете использовать плагин Datepicker, он меняется только на дату, как и должно быть.
Чтобы удалить Time-part из текстового поля, я думал о том, чтобы сделать:
$(".hasDatepicker").each( function() {
$(this).val($this.val().replace(" 0:00:00",""));
});
Что кажется мне самым простым решением.
Но тогда мне нужно было бы добавить его на каждую страницу, и мне было интересно, есть ли способ сделать версию .delegate () этой. Что-то вроде
$(document).delegate(".hasDatepicker", SOME_EVENT, function () {
$(this).val($this.val().replace(" 0:00:00",""));
});
Проблема в том, каким должен быть SOME_EVENT? Я хочу, чтобы это срабатывало, когда был добавлен класс hasDatepicker, так что я знаю, какие текстовые поля нужно очистить (есть другие текстовые поля для замечаний и т. Д., Которые также содержат эту строку, но их следует заменить , а не .
Есть ли такое событие, которое вызывает изменение класса?
Или любой другой способ решить эту проблему без необходимости копировать и вставлять его на каждую страницу? :)