如果没有选中,则将焦点置于第一个复选

时间:2013-11-01 23:39:48

标签: jquery

我在javascript中这样做,如何将焦点设置为jquery中的第一个复选框。

var chk = document.getElementsByName('program[]');
var len = chk.length;
var checked = false;
for(var i=0; i<len; i++) {
     if(chk[i].checked) {
        checked = true;
        break;    
      } 
}
if( !checked ) {
    chk[0].focus();
    document.getElementById('errpgm').innerHTML = "Please select at 
            least one program";
    errcount++;
}

4 个答案:

答案 0 :(得分:5)

修改:假设您想在页面加载时关注

,我的回答是有效的

更好地使用autofocus属性。

通常,使用javascript自动设置焦点不是一个好主意,因为您必须等到要聚焦的元素已加载到DOM。但是,如果你等待很多,那么用户可能会聚焦另一个输入,你的焦点变化会很烦人。

答案 1 :(得分:3)

你已经在没有jQuery的情况下专注,它可以工作:http://fiddle.jshell.net/Fxuv3/(在Chrome和IE中测试过)。 你的实际问题是什么?

编辑那么为什么要用jQuery做任何事情(也许只是用你现有的代码'focusFirstUncheckedCheckbox(name)'来创建一个函数?)

但当然你可以:http://fiddle.jshell.net/Fxuv3/1/

if (!$('input[name^=program]:checked').length) {
    $('input[name^=program]')[0].focus();
}

答案 2 :(得分:1)

也许这样(未经测试):

$('[type=checkbox]:first').focus();

答案 3 :(得分:0)

$('input[type="checkbox"]').first().focus();

$('input[type="checkbox"]').eq(0).focus();  

$('input[type="checkbox"]:first').focus();