2009-08-06 25 views
1

現在のHTML SELECTタグは、1つのことを除いて素晴らしい機能を果たします。現在の項目のトグルを実装することは可能ですか?selectタグで選択と選択解除(トグル)

現在の選択肢がある場合は、もう一度クリックして「選択解除」したいと思います。これは今のところうまくいかず、単に現在の選択を「選択済み」に保ちます。

「現在の」選択肢とともに「前の」選択肢を知り、2を比較してすべてを「選択解除」する必要があるかどうかを確認する必要があるようです。前の選択をどうやって得るのですか?私が知っているのは、現在の選択である "selectedIndex"だけです。

方法はありますか?

+1

これは複数選択の選択ボックスですか? –

+0

上記の解決策があなたのために機能しましたか? – PortageMonkey

答えて

0

これを達成するには、次のようにjavascriptを少し使用します。私はテストしたし、あなたが要求したとおりに動作するようです。私は可読性を重視していますが、あなたのために働いたらきれいにすることができます。

<script language="JavaScript" type="text/javascript"> 
    function toggleSelectedValue() { 

     var selObj = document.getElementById('myList'); 
     var selIndex = selObj.selectedIndex; 
     var selValue = selObj.options[selIndex].value; 
     var prevSelValue = document.getElementById('trackSelectedValueHiddenField').value; 

     if (selValue == prevSelValue) { 

      //Delect "all" items 
      selObj.selectedIndex = -1; 
      document.getElementById('trackSelectedValueHiddenField').value = 0; 
     } 
     else {setSelectedValue();} 

    } 
    function setSelectedValue() 
    { 
     var selObj = document.getElementById('myList'); 
     var selIndex = selObj.selectedIndex; 
     document.getElementById('trackSelectedValueHiddenField').value = selObj.options[selIndex].value; 
    } 
    </script> 

</head> 
<body> 
<div id="wrapper"> 
    <div id="contentDiv" style="height:686px; border: solid 1px red;"> 
    <select multiple="multiple" id="myList" onclick="toggleSelectedValue()"> 
     <option value="1">Test</option> 
     <option value="2">Test</option> 
     <option value="3">Test</option> 
    </select> 
    <input type="hidden" id="trackSelectedValueHiddenField" value="0" /> 
    </div> 
</div> 
</body> 
</html> 
関連する問題