如何在使用.focus()时跳过ReadOnly和Disabled输入

时间:2012-02-05 15:11:14

标签: javascript jquery

如何修改此代码,以便.focus()第一个表单对象readonlydisabled并且跳转到下一个表单输入以进行焦点时不会 <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}}修复了很多我的问题,但我仍然试图弄清楚是否只读,跳到下一个。

3 个答案:

答案 0 :(得分:2)

使用:

$(yourElement).not(":disabled").not(":readonly")

答案 1 :(得分:1)

对于那些正在寻找的人来说,这里是答案。

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

答案 2 :(得分:0)

您需要将条件更改为

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