Javascript 这个Jquery选择器代码有什么问题?
我想在调用函数时集中窗体中的第一个有效元素,因此我编写了以下代码:Javascript 这个Jquery选择器代码有什么问题?,javascript,jquery,Javascript,Jquery,我想在调用函数时集中窗体中的第一个有效元素,因此我编写了以下代码: function focusFirst(id) { $("#" + id + " input:visible:enabled:not([readonly]), #" + id + "textarea:visible:enabled:not([readonly]), #" + id + " select:visible:enabled:not([readonly])").first().focus(); } 并这样称呼它
function focusFirst(id) {
$("#" + id + " input:visible:enabled:not([readonly]), #" + id + "textarea:visible:enabled:not([readonly]), #" + id + " select:visible:enabled:not([readonly])").first().focus();
}
并这样称呼它:
oncomplete="focusFirst('formCadastro')"
我的表单名为“FormCadstro”,无论如何它都不会工作,但当我更改为此时:
function focusFirstFormCadastro() {
$("#formCadastro input:visible:enabled:not([readonly]), #formCadastro textarea:visible:enabled:not([readonly]), #formCadastro select:visible:enabled:not([readonly])").first().focus();
}
它起作用了。因此,这里的问题是如何在选择器中连接我的id?在第二个id之后缺少一个空格:
function focusFirst(id) {
$("#" + id + " input:visible:enabled:not([readonly]), #" + id + " textarea:visible:enabled:not([readonly]), #" + id + " select:visible:enabled:not([readonly])").first().focus();
}
您忘记在ID en textarea:Update链接之间添加空格,如下所示:
$("#" + id + " input:visible:enabled:not([readonly]), #" + id + " textarea:visible:enabled:not([readonly]), #" + id + " select:visible:enabled:not([readonly])").first().focus();
为了便于阅读,您应该使用相关的横向/过滤方法:
function focusFirst(id) {
$("#" + id).find('input, textarea').filter(':visible:enabled:not([readonly])').first().focus();
}
哦,哈哈,你打败了我:(考虑使用
.find()
来提高可读性,甚至可以传递元素(jq或不是)而不是字符串ID