2013-11-01 42 views
2

我在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++; 
} 
+0

剛剛成立的第一個元素到自動聚焦屬性? – adeneo

+0

我不想把重點放在第一個元素上,如果用戶沒有選擇任何我想要關注複選框 – user2769614

回答

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(); 
} 
+0

我想在jQuery中執行 – user2769614

+0

更新我的答案,只使用jQuery。 – boedah

4

編輯:我的答案是有效的假設要聚焦在頁面加載時

更好地利用autofocus屬性。

通常,使用javascript自動設置焦點並不是一個好主意,因爲您必須等到您要聚焦的元素已經加載到DOM。但是,如果你等待很多,那麼用戶可能已經關注了另一個輸入,並且你的焦點變化會很煩人。

+0

雖然他/她可能一直在問X Y問題,但這是最好的解決方案。 http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem – SamV

+0

+1,這確實回答了這個問題,但OP的代碼檢查複選框的事實將會是它指示它在事件上運行,如表單提交,並且在頁面加載時設置autofocus屬性不是一個選項。 – adeneo

+0

請注意,自動對焦在IE8或IE9中不起作用。 ([源](http://caniuse.com/#search=autofocus)) –

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

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

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

不工作,重點總是在形式的第一個元素 – user2769614

1

也許是這樣的(未測試):

$('[type=checkbox]:first').focus(); 
相關問題