如何使用jQuery定位表单中的特定字段?

时间:2014-02-04 17:40:57

标签: jquery

我想定位表单中的第一个input[type="text"]元素,如果表单不包含这样的元素,则定位第一个input[type="number"]元素。

如何做到这一点?

这是我到目前为止所得到的:

$('input[type=text]:first, input[type=number]:first').focus();

感谢您的帮助。

5 个答案:

答案 0 :(得分:4)

您可以使用.first()方法。

$('form input').filter('[type=text], [type=number]').first().focus();

http://jsfiddle.net/5aafz/

答案 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/