2012-02-05 57 views
0

如何修改此代碼以便它不會.focus()第一個表單對象如果是readonlydisabled並跳至下一個表單輸入以獲得焦點?如何在使用.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") 
相關問題