Я просто работал над сценарием ExtJS и у меня есть ComboBox, который имеетпроверки ExtJS ComboBox возвращает неожиданный результат
allowBlank = false
и
forceSelection = true
У меня есть элемент списка, который действует как сообщение по умолчанию, который имеет отображаемый текст
Please select...
и никакой ценности
''
При запуске проверки на ComboBox я получаю истинную не знаю, почему? Согласно документации при
allowBlank = false
проверка вынужден проверить value.length> 0 Так что я сделал свой собственный тест в JS консоли
>> if (thisForm.controlManager.controlArray[2].allowBlanks) { if (thisForm.controlManager.controlArray[2].length >= 0) { true; } false; } else { if (thisForm.controlManager.controlArray[2].length > 0) { true; } false; }
и он вернулся ложные Так что я думал, что это может быть ошибка в методе проверки, поэтому я попытался сделать это
>> thisForm.controlManager.controlArray[2].validateValue('')
и получил это в результате истинного
Любой один есть какой-либо идеи, что я мог бы делать неправильно или если что-то еще нужно, чтобы получить набор этот Validate вернуться ложным, если значение «».
PS. Я также попытался это
>> thisForm.controlManager.controlArray[2].validateValue(' ')
и получили правильный результат, который ложным. Это меня очень смутило, так как обычно я ожидаю, что '' и '' вернут то же значение в валидации.
Я знаю, что обходным путем было бы установить значение «', но я предпочел бы работать с ним».
Благодаря
Спасибо о том, что дал мне понимание того, что происходит под капотом. Я переопределил функцию isValid, чтобы использовать this.getValue() вместо this.getRawValue(), поскольку этот метод получает отображаемый текст вместо значения. Довольно странно. Я также переопределить метод validateValue сделать следующее: 'если (a.preventMark!) { \t если (с) \t { \t \t если (a.allowBlanks) \t \t { \t \t \t а. clearInvalid(); \t \t} \t \t еще \t \t { \t \t \t, если (b.length> 0) \t \t \t { \t \t \t \t a.clearInvalid(); \t \t \t} \t \t \t еще \t \t \t { \t \t \t \t d = "Вы должны выбрать правильное значение!"; \t \t \t \t a.markInvalid (d); \t \t \t \t c = false; \t \t \t} \t \t}} \t \t еще \t { \t \t a.markInvalid (д); \t} \t \t возвращение c; } ' –
получил еще лучший способ для всех заинтересованных, переопределить isValid, чтобы использовать getValue вместо getRawValue, а затем переопределить getErrors, поскольку это ничего не делает по умолчанию, поэтому, изменяя это, нет необходимости изменять validateValue :) Много более чистых и более подходящих подход! –