2010-07-25 4 views
14

У меня есть форма, где пользователю нужно щелкнуть ссылку, выбрать пользователя через всплывающее окно, которое затем заполняет скрытое поле идентификатором и полем отображения с именем пользователя.jQuery - могу ли я проверить недействительное поле?

Поле отображения отключено = «отключено», чтобы заставить пользователя использовать всплывающее окно, а не вводить значение в поле.

Мне нужно, чтобы пользователь выбирал имя. Я использую плагин проверки jQuery и Jorn.

Выполнение обязательного: true в отключенном поле, похоже, не срабатывает, если значение пустое.

Любые идеи, как это решить?

+0

Если поле я s только для отображения, не можете ли вы просто отключить идентификатор в скрытом? Зачем даже использовать текстовое поле только для отображения. Просто используйте jQuery для записи в span или div. Пользователь не считает, что они могут редактировать текст, и вы не пытаетесь проверить что-то, что не имеет значения. – ahsteele

+0

Почему бы не проверить скрытое поле, чтобы проверить наличие в нем идентификатора? – Matt

ответ

27

Вместо того чтобы отключить его, вы пытались сделать это только для чтения?

<input type="text" readonly="readonly" /> 

я помню из лет назад, что инвалиды поля не представляются по формам, и, следовательно, вероятно, не проверяются

Вот W3C HTML4 Spec на эту тему.

+0

Отлично !! Я даже не знал, что он только что существует. Совместим ли он со всеми браузерами? – Falantar014

1

почему бы не позволить ему просто Befor проверки, а затем отключить его снова ... с помощью .attr('disabled',''), чтобы включить его, а затем .attr('disabled','disabled') отключить его снова, это произойдет так быстро, вы не будете даже замечать.

2

Согласно предыдущему предложению возможным решением может быть:

var _valid = $.fn.valid; 
$.fn.valid = function (alsoDisabled) { 
    var alsoDisabled = alsoDisabled || false; 
    if (alsoDisabled) { 
     this.find('[disabled]').prop('disabled', false); 
    } 
    var retVal = _valid.apply(this); 
    if (alsoDisabled) { 
     this.find('[disabled]').prop('disabled', true); 
    } 
    return retVal; 
}; 


и поэтому вы могли бы назвать правильный метод с дополнительными аргументами: $('#form').valid(true) проверить также отключил поле или $('#form').valid() для нормального поведение

наилучшими пожеланиями Гаэтано

Смежные вопросы