Общий метод расширения SetValue (но только для свойств ref) будет:
public static void SetValue<T>(this T property, T value)
{
property = value;
}
И будет использоваться как
ButtonOrNull?.Visibility.SetValue(Visibility.Hidden);
От взгляда на исходный код валидатора, я думаю, что это должно сделать это:
$.validator.addMethod('min-length', function (val, element) {
return this.optional(element) || val.length >= $(element).data('min');
}, function(params, element) {
return 'The field cannot be less than than ' + $(element).data('min') + ' length.'
});
В исходном коде строка сообщения НЕ находится в закрытии; замыкание является вторым аргументом addMethod
, сообщение об ошибке является третьим аргументом.
Если ответ Barmar не работает для вас, вероятно, из-за того, что ваши параметры для элемента уже содержат сообщение об ошибке (установлено с сервера в asp.net MVC, например)
Итак, jQuery .validate будет игнорировать новый по умолчанию, заданный вторым параметром, $ .validator.addMethod
. Способ вокруг него состоит в том, чтобы сделать следующее:
$.validator.addMethod('min-length', function (val, element) {
this.settings.messages[element.name]['min-length'] = function () { return 'put your custom message here'; };
return this.optional(element) || val.length >= $(element).data('min');
});
поздно для этой вечеринки, но это, похоже, работает для меня:
jQuery.validator.addMethod("minDate", function(value, element, param) {
var inputDate = new Date(value);
return (inputDate >= param)
}, function(param, element) {
return 'Enter a date greater than or equal to ' + $.datepicker.formatDate("M d, yy", new Date(param));
});
, где значение minDate ранее было установлено на элементе управления, чтобы проверить что-то вроде этого:
$('form:first').validate({
rules: {
"date-filed": {
minDate: new Date(2000,0,0)
},
...
Найден этот полу случайно. Мои сообщения очень динамичны в зависимости от результата. поэтому прямо перед тем, как я вызываю validate, я добавляю атрибут data-msg = «Мое пользовательское сообщение» к элементу. Validator выберет это:
err_msg = 'My custom message';
$('#my_element_id').attr('data-msg', err_msg);
$('#my_form_id').validate().element('input[name=\'my_element_name\'');
нашел некоторые ссылки на код в customDataMessage в jquery.validate.js
Прежде всего, я ценю ответ Бармара.
Если вы только думаете, вы можете использовать любое из сообщений проверки jquery с его значением параметра, вы можете просто вызвать экземпляры сообщений.
Вот код
jQuery.validator.addMethod("custom_min", function(value, element, param) {
value = replaceAll(value, ',' , '');
return this.optional( element ) || value >= param;
},jQuery.validator.messages.min );
В проверке jquery
jQuery('#form_id').validate({
rules: {
'field_name': {
required: true,
number: true,
custom_min: 1000
}
});
Итак, если вы введете что-то меньше 1000, оно выдаст вам сообщение об ошибке: «Пожалуйста, введите значение более 1000 (сумма, которую вы положили в валидацию) ». Этот метод будет быстрее, если ваша проверка требует какой-либо модификации любого текущего метода или вы разрабатываете его на нескольких языках.
$(element).data('error','... custom message ...')
, а затем восстановить его в функции сообщения черезreturn $(element).data('error')
– patricksurry 17 August 2014 в 13:19addMethod
будет проигнорирован. Я думал, что валидатор будет использовать параметр сначала, а затем использовать значение по умолчанию, еслиnull
или пустая строка была возвращена. – ps2goat 10 October 2014 в 19:35element
не является объектом jQuery. Нужно ли превращать его в одно? – user1032531 5 January 2016 в 14:39