2012-02-05 14 views
2

複数のラジオボタングループの最初の要素をチェックしたいと思います。Jqueryなしですべてのラジオボタンを確認する

私は、はい私はfirequeryがあると知って、私はしたくない理由であるFirebugのを、使用していますが、

どれヘルプyouldは素晴らしいこと:)彼らは昔にそれをやったような方法がなければなりません、thx事前に。

答えて

4

ループ後方document.getElementsByTagName('input')上及びtype"radio"に等しい場合truecheckedを設定。

同じグループ内の複数のボタンを確認しようとすると、最後のものが保持されます。
したがって、後ろにループすると、各グループの最初のオプションがチェックされます。ここで少し愚かな感じ

+0

どうすればいいですか?私が必要とするものとまったく同じように後ろにループします。 – Harry

+0

'for(var i = arr.length - 1; i> = 0; i - )' – SLaks

+0

これは間違っているようです...しかし、それはとても簡単で、うまくいくはずです。 :-) –

1

更新

、あなたあなたがFirebugのを使用して、ひいてはFirefox、および私たちが利用できるquerySelectorを持っていたと述べました。したがって、任意の所与のグループ内の最初のラジオボタンがチェックされているワンライナー:

document.querySelector('input[type="radio"][name="theGroupName"]').checked = true; 

Live example

querySelector戻りマッチング部材、及びので、上記type="radio"とを有する第1 input要素が返されname="theGroupName"。次に、checkedtrueに設定します。 (再び)すべてグループの最初の操作を行うが、それはあなたがより多くの制御を与え、あるいない確かに

ワンライナー  — Firebugのに便利。


オリジナル答え

あなたは文書順にすべてinputの要素を取得するためにgetElementsByTagNameを使用することができます。その後、ループして、type="radio"のものを処理し、取り込んだ最後のnameを覚えておいてください。各名前の最初にchecked = trueとマークしてください。

例えば:

var inputs = document.getElementsByTagName('input'); 
var lastName, index, input; 
for (index = 0; index < inputs.length; ++index) { 
    input = inputs.item(index); 
    if (input.type.toLowerCase() === "radio") { 
     if (input.name !== lastName) { 
      lastName = input.name; 
      input.checked = true; 
     } 
    } 
} 

Live example

あなたには、いくつかのコンテナにそれを制限したい場合は、あなたがelement version of getElementsByTagNameを使用することができます。

+0

これは、グループが連続している場合にのみ機能します。 – SLaks

+0

これは、すべてのラジオボタンオプションがソースに隣接していることを前提としています(ラジオボタンの介入なし)。 – ErikE

+0

@SLaks:True ... –

関連する問題