DropdownListFor Не очистка проверки [дубликат]

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 ​​

5
задан Jason Butera 10 July 2012 в 17:20
поделиться

3 ответа

Вот соответствующий код проверки 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;
}
6
ответ дан bhamlin 26 August 2018 в 17:56
поделиться

Чтобы не ломать логику для флажков и нескольких наборов выбора, вы можете использовать:

$.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, поэтому используйте на свой страх и риск ....

2
ответ дан JustAMartin 26 August 2018 в 17:56
поделиться

, поскольку StringLength соответствует правилу rangelength в jquery.validate. В случае списка выбора он проверяет количество выбранных элементов, а не длину выбранного значения, поэтому, если вы пишете правило минимальной длины 1, оно будет работать

0
ответ дан Nadeem Khedr 26 August 2018 в 17:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: