2012-02-05 2 views
0

как этот код будет изменен, чтобы он не .focus() объект первой формы, если он readonly или disabled, и для перехода к следующему вводу формы для фокуса?Как пропустить ReadOnly и Disabled входы при использовании .focus()

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

<script language="javascript" type="text/javascript"> 
    // Focus first element 
    $.fn.focus_first = function() { 
     var elem = $('input:visible', this).get(0); 
     var select = $('select:visible', this).get(0); 
     if (select && elem) { 
     if (select.offsetTop < elem.offsetTop) { 
      elem = select; 
     } 
     } 
     var textarea = $('textarea:visible', this).get(0); 
     if (textarea && elem) { 
     if (textarea.offsetTop < elem.offsetTop) { 
      elem = textarea; 
     } 
     } 

     if (elem) { 
     elem.focus(); 
     } 
     return this; 
    } 
    </script> 

Фактически использование input:enabled:visible исправляет много моих проблем, но я до сих пор пытаюсь понять, если только для чтения, чтобы перейти к следующему.

ответ

1

Ну вот ответ в любом случае для тех, кто ищет ..

var elem = $('input:enabled:visible:not([readonly="readonly"])', this).get(0); 
0

Вы должны изменить условие

if (elem && !elem.prop('readonly') && !elem.prop('disable')) { 
2

использование:

$(yourElement).not(":disabled").not(":readonly") 
Смежные вопросы