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