2011-07-10 11 views
0

jqueryを初めて使用しています。疑いがあります。チェックされているチェックボックスの数を確認するために、次のjQueryスクリプトがあります。JQueryでチェックボックスのチェックボックスの値を取得する

<script> 
function countChecked() { 
    var n = $("input:checked").length; 
    $("div").text(n + (n <= 1 ? " is" : " are") + " checked!"); 
} 
countChecked(); 
$(":checked").click(countChecked); 
</script> 

しかし、これはページ全体に1セットのチェックボックスしかない場合に機能します。しかし、私はいくつかの異なるセットのチェックボックスとラジオボタンをページに持っています。 jQueryをバインドするチェックボックスには、 'selectArticle []'という名前属性があります。

これらのチェックボックスのみを監視するために、上記のスクリプトにどのような変更を加えましたか。上記のスクリプトを変更して、チェックされたChecboxの値を実際に取得することも可能です。

誰かが私のために上記のスクリプトを修正できますか...ありがとう!

答えて

4

Filter by attribute [docs]。あなたのコードは実際には正しくないと思います。すでに選択されている要素にのみイベントハンドラをバインドします。 ($checkboxes)は、ハンドラを呼び出すたびに彼らのために検索するよりも優れている要素をキャッシュ

var $checkboxes = $("input[name='selectArticle[]']"); 

function countChecked() { 
    var n = $checkboxes.filter(":checked").length; 
    $("div").text(n + (n <= 1 ? " is" : " are") + " checked!"); 
} 

$checkboxes.change(countChecked).change(); 

:あなたはこのグループのすべてのチェックボックスにバインドしたい場合は、それらのすべてを選択します。

本当に、選択されたものだけハンドラをバインドし、このようなイベントハンドラをバインドしたい場合:

$("input[name='selectArticle[]']:checked").change(countChecked).change(); 

changeイベントにイベントハンドラをバインドすることをお勧めします(選択を変更することも可能にキーボードを介して)。

countCheckedを呼び出す代わりに、changeを呼び出すことによって、イベントハンドラがバインドされた後に手動でchangeイベントがトリガーされることがわかります。

+0

の名前です。チェックボックスをオンにしましたか? –

+0

@サニー:あなたは '.val()'を使って値を得ることができます。各値を取得するには、チェックされたすべての要素を反復処理する必要があります。 –

+0

助け合ってくれてありがとう。あともう一つだけ。私は最終的にチェックボックスの値をチェックすることができました。この値はいくつかのidを表します。チェックしたチェックボックスに値1があるとしたら、そのチェックボックスの下にあるすべての入力テキストフィールドは、title1、headline1、dw1 ...などのような名前になります。 'title1、headline etc'のような対応する要素はすべて検証されていなければなりません。チェックされていないチェックボックスは必要ありません... –

0

使用このような何か:

$("input[name='selectArticle[]']:checked") 
0

代わりの

$("input:checked").length; 

をやってますが、属性[名= certainnameが]でいくつかの遅延を引き起こすことが知られている

$("input[name='selectArticle[]']:checked").length; 

を行うことができますあなたのコード。

<script> 
function alertValues() { 
    $("input.classname:checked").each(function() { 
     alert($(this).val()); 
    } 
} 
alertValues(); 
</script> 
:あなたが値を使用したい場合はあなたのような何かを行うことができます

<script> 
function countChecked() { 
    var n = $("input.classname:checked").length; 
    $("div").text(n + (n <= 1 ? " is" : " are") + " checked!"); 
} 
countChecked(); 
$(".classname:checked").click(countChecked); 
</script> 

EDIT

:より良いあなたが特定のクラスを必要とし、その後のような何かをするすべてのチェックボックスを提供することです

alertValues()を呼び出すと、チェックボックスのすべての値が警告されます。

+0

チェックボックスの値もどうやって取得できますか? –

+0

私はすべての値を警告する方法を示す私の答えを編集しました。 jqueyr:.eachとjquery .val()googleを使用します。 – Tim

0

$(「入力[名前= 『チェックボックス名』]:チェックする」)長さ

チェックボックス名:。私はの値を得るのですか、チェックボックスの一覧

関連する問題