我想定位表单中的第一个input[type="text"]
元素,如果表单不包含这样的元素,则定位第一个input[type="number"]
元素。
如何做到这一点?
这是我到目前为止所得到的:
$('input[type=text]:first, input[type=number]:first').focus();
感谢您的帮助。
答案 0 :(得分:4)
您可以使用.first()
方法。
$('form input').filter('[type=text], [type=number]').first().focus();
答案 1 :(得分:2)
if ($('input[type=text]:first').length) {
$('input[type=text]:first').focus();
} else {
$('input[type=number]:first').focus();
}
<强> jsFiddle example 强>
答案 2 :(得分:1)
Man,选择器的行为就像在css中一样,并且通过这种方式,您不能拥有故障转移选择器(如果一个不存在,则获取另一个)。 你必须使用if if:
if (!$('form input[type=text]:first').size()){
$('form input[type=text]:first').focus();
}else{
$('form input[type=number]:first').focus();
}
您可以保存选择器结果,以避免在焦点功能中再次使用dom搜索:
first_result = $('form :input[type=text]:first')
答案 3 :(得分:0)
您也可以使用:first-of-type。
$('input[type="text"]:first-of-type, input[type="number"]:first-of-type').focus();
答案 4 :(得分:0)
您的代码存在的问题是您选择了页面上的第一个input[type="text"]
和input[type="number"]
元素。那是,
在jQuery选择器中的含义。
您需要做的是检查input[type="text"]
。如果它不存在,那么您使用input[type="number"]
。因此,您需要一个条件语句。
<强>解决方案:强>
var firstInput;
firstInput = $('input[type="text"]:first-child');
if(firstInput.length > 0){
console.log(firstInput);
}else{
firstInput = $('input[type="number"]:first-child');
console.log(firstInput);
}
这是jsfiddle:http://jsfiddle.net/UL6k3/2/