2011-07-25 19 views
1

テーブルのデータを使用してチェックボックスのリストを表示するCheckBoxListがあります。JavascriptまたはjQueryを使用してCheckBoxListコントロール内の特定のCheckListItemを検索します。

この表のレコードは変更されると予想されますが、最後の項目のテキスト値は期待値の[その他]です。

ユーザーが「その他」を選択した場合、関連するテキストボックスを有効にして、指定した「その他」の説明を入力できるようにします。私は、JavascriptまたはjQueryを使用してクライアント上でこれを行うことができるようにしたい。 IDは、個々のリスト項目を動的に作成されているので

私のようなものをハードコーディングを避けることができる方法があります:

chkOther =のdocument.getElementById(「checkListItem12_chkOccupationOther」)

私はjQueryのを知りませんしかし、私は図書館がおそらく、一致するIDマスクを使って制御を得るための良い方法を提供していると考えています。

提案?

答えて

1

「その他」のチェックボックスが常に最後になることが保証できる場合は、last selectorを使用できます。チェックボックスリストのIDを使用して :

$(document).ready(function() { 
    $("#<%=YourCheckBoxList.ClientID%> input:checkbox:last").click(function(){ 
     if(this.checked) {   
      //Enable Text Box Here 
     }else{ 
      //Disable here 
     } 
    }); 
}); 

EDIT: RobGのコメントどおり、「この」はjQueryオブジェクトへの不要な変換を削除するために更新しました。

+0

うん、それはうまくいくように聞こえます... – ChadD

+0

ラジオボタンがチェックされているかどうかをテストする方法を示す例が更新されました。 –

+0

$をキャッシュするか、取り除いてください。 'if(this.checked)'をテストするほうがはるかに効率的です。 – RobG

1

プレーンなJSでこれを簡単に行うことができます。フォームは、最後のチェックボックスにリスナーを追加取得することによって開始するので、私は、あなたのチェックボックスがフォームであることを推測します:

function addClick() { 
    var form = document.forms['f0']; 
    var input, inputs = form.getElementsByTagName('input'); 
    var i = inputs.length; 

    while (i--) { 
    input = inputs[i]; 

    if (input.type == 'checkbox') { 
     input.onclick = function() { 
     if (this.checked) { 

      // Do stuff... 
      alert('checked!'); 

     } else { 
      // Put stuff in here if unchecked, probably 
      // want to hide whatever is shown when above 
      // is clicked 
     } 
     } 
     // Going backward, the first checkbox found is the 
     // last one so stop after first one found 
     return; 
    } 
    input = null; 
    } 
} 

を次にDOMレディ機能を使用して、下のスクリプトとしての機能を追加したり、 window.onload。

+1

これは、チェックボックスがチェックボックスリストの最後のチェックボックスだけでなく、フォームの最後のチェックボックスである場合にのみ有効だと思います。フォームをつかむ代わりに、チェックボックスのリストを取得してみてください:cbList = document.getElementByID( '<%= YourCheckBloxList.ClientID%>');入力= cbList.getElementsByTagName( '入力'); –

+0

私の答えの最初の行は、 "私はあなたのチェックボックスがフォームにあると推測します"と言っています。そうですね、フォームのチェックボックス用です。 OPが他の基本要素(ドキュメントなど)を使用する場合は、それも問題ありません。 – RobG

+0

Rob、OPは彼がチェックボックスリストASP.net Webコントロールを使用していることを示しています。チェックボックスのリストの後に他のチェックボックスがあることは完全に可能です。私のコメントは、後続のフォームのチェックボックスをすべてカバーすることでした。私が読んでいるとき、あなたのコードは常にフォームの最後のチェックボックスにリスナを追加します。これは実際には必要なチェックボックスではないかもしれません。 –

関連する問題