Index: ------------> 0 1 2 3 4 +---+---+---+---+---+ | a | b | c | d | e | +---+---+---+---+---+ 0 -4 -3 -2 -1 <------------ Slice: <---------------| |---------------> : 1 2 3 4 : +---+---+---+---+---+ | a | b | c | d | e | +---+---+---+---+---+ : -4 -3 -2 -1 : |---------------> <---------------|
Надеюсь, это поможет вам смоделировать список в Python.
Ссылка: http://wiki.python.org/moin/MovingToPythonFromOtherLanguages
Вот соответствующий код проверки jquery. Как вы можете видеть, похоже, что применяется проверка длины к числу выбранных опций, а не к длине параметра. Кажется, что они применяются только к многобайтовым спискам.
maxlength: function(value, element, param) {
return this.optional(element) || this.getLength($.trim(value), element) <= param;
}
getLength: function(value, element) {
switch( element.nodeName.toLowerCase() ) {
case 'select':
return $("option:selected", element).length;
case 'input':
if( this.checkable( element) )
return this.findByName(element.name).filter(':checked').length;
}
return value.length;
}
Что вы можете сделать, это переопределить функцию getLength
, чтобы просто вернуть value.length
напрямую.
$.validator.prototype.getLength = function (value, element) {
return value.length;
}
Чтобы не ломать логику для флажков и нескольких наборов выбора, вы можете использовать:
$.validator.prototype.getLength = function (value, element) {
switch (element.nodeName.toLowerCase()) {
case 'select':
{
var attr = $(this).attr('multiple');
// For some browsers, `attr` is undefined; for others,
// `attr` is false. Check for both.
if (typeof attr !== 'undefined' && attr !== false) {
return $("option:selected", element).length;
}
}
case 'input':
if (this.checkable(element))
return this.findByName(element.name).filter(':checked').length;
}
return value.length;
}
ПРЕДУПРЕЖДЕНИЕ: Я тестировал это только на DropDownFor, поэтому используйте на свой страх и риск ....
, поскольку StringLength
соответствует правилу rangelength в jquery.validate
. В случае списка выбора он проверяет количество выбранных элементов, а не длину выбранного значения, поэтому, если вы пишете правило минимальной длины 1, оно будет работать