На вопрос ответили, но одно серьезное основание использовать вложенный интерфейс состоит в том, если его функция непосредственно связана с классом, это находится в. Хороший пример этого Listener
. Если бы у Вас было класс Foo
, и Вы хотели, чтобы другие классы были в состоянии прислушаться к событиям на нем, Вы могли объявить интерфейс, названный FooListener
, который в порядке, но это, вероятно, было бы более ясно объявить вложенный интерфейс и иметь те другие классы реализация Foo.Listener
(вложенный класс Foo.Event
не плох наряду с этим).
Не могли бы вы привязать обрезку к событию размытия? Что-то вроде ...
$("#cemail").blur(function(){ $(this).val(jQuery.trim($(this).val()); });
Для справки, пока я не найду более элегантное решение, я использую addMethod ] следующим образом:
// Extend email validation method so that it ignores whitespace
jQuery.validator.addMethod("emailButAllowTrailingWhitespace", function(value, element) {
return (this.optional(element) || jQuery.validator.methods.email.call(this, jQuery.trim(value), element));
}, "Please enter a valid email");
$().ready(function() {
$("#commentForm").validate({
rules: {
cemail: {
required: true,
emailButAllowTrailingWhitespace: true
}
}
});
});
Примечание: это фактически не удаляет пробелы из поля, он только игнорирует это. Поэтому вам необходимо убедиться, что вы выполнили обрезку
на стороне сервера перед вставкой в БД.