五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > 用JS(JavaScript)來進(jìn)行對(duì)Struts的Html:checkbox或者h(yuǎn)tml:multibox進(jìn)行全選、及

用JS(JavaScript)來進(jìn)行對(duì)Struts的Html:checkbox或者h(yuǎn)tml:multibox進(jìn)行全選、及

文章來源:365jz.com     點(diǎn)擊數(shù):1661    更新時(shí)間:2009-10-14 10:50   參與評(píng)論

 最近在開發(fā)項(xiàng)目的時(shí)候,要求實(shí)現(xiàn)對(duì)地市的權(quán)限選擇,使用checkbox進(jìn)行實(shí)現(xiàn)。

于是在網(wǎng)上先找了一下關(guān)于Struts對(duì)于html:checkbox進(jìn)行的各種控制,可是很失望,網(wǎng)上說的無非都是
使用各種隱藏域來進(jìn)行賦值或者控制的,而且在使用js對(duì)checkbox的狀態(tài)判斷的時(shí)候,采用的方法都很麻煩,這里就不一一列舉了。

進(jìn)入正題;

開始的時(shí)候發(fā)現(xiàn)html:checkbox下沒有checked屬性,當(dāng)然對(duì)于它的name和id屬性還是由于已經(jīng)發(fā)生實(shí)質(zhì)意義上的轉(zhuǎn)變而不能采用getElementById來進(jìn)行獲取。所以一度陷入低谷。

在網(wǎng)上找來找去也沒找到滿意答案。于是還是自己動(dòng)手親自來操作。

靜下來仔細(xì)一想,發(fā)現(xiàn)其實(shí)不管jsp頁(yè)面是由Struts標(biāo)簽來寫還是有JSTL來寫,最后都是先要生成一個(gè)html頁(yè)面。所以這樣就好辦了,因?yàn)槲覀兊? “全選” 和 “全不選” 都是在html頁(yè)面生成之后才進(jìn)行控制的,所以這個(gè)時(shí)候只要關(guān)心已生成的HTML頁(yè)面中存在的標(biāo)簽并對(duì)其進(jìn)行控制即可。

所以可以用下面的方法進(jìn)行html:checkbox或者h(yuǎn)tml:multibox的全選控制:
-----------------------------------------------


 jsp部分代碼:

<input type="checkbox" name="checkall" onclick="checkAll();" value="checkall">全選<br>
     
<logic:iterate id="city" name="citylist">
      <html:multibox   property="Area" ><bean:write name="city" property="cityID"/></html:multibox><bean:write name="city" property="cityName"/>

</logic:iterate>
-----------------------------------------------
其中
citylist從action中獲?。?br />
對(duì)應(yīng)action代碼:
List<City> citylist = 從數(shù)據(jù)獲取所有的城市并封裝成一個(gè)list。
request.setAttribute ("citylist ",citylist );
-----------------------------------------------
對(duì)應(yīng)City類應(yīng)該包含:
private String cityName;
private String cityID;
已經(jīng)對(duì)應(yīng)的get、set方法。
-----------------------------------------------
JS

function checkAll(){
    //全選
    var flag;
    var area = document.getElementsByName("Area");
    var len = area.length;

    var chall = document.getElementsByName("checkall")[0];
   
    if(chall.checked == true){
       
        for(i=0;i<len;i++){
            area[i].checked = "checked";
        }
    }

    if(chall.checked != true){
        for(i=0;i<len;i++){
            area[i].checked = "";
        }
    }
       
}


因?yàn)檫@個(gè)時(shí)候已經(jīng)存在一個(gè)完整的html頁(yè)面,而
<html:multibox   property="Area" ><bean:write name="city" property="cityID"/></html:multibox>
生成的代碼為:
<input type="checkbox" name="Area" value="ln" checked="checked">遼寧
     
      <input type="checkbox" name="Area" value="ln/sy" checked="checked">沈陽(yáng)
     
      <input type="checkbox" name="Area" value="ln/dl" checked="checked">大連
     
      ………………

所以可以使用     
var area = document.getElementsByName("Area");
來獲取到checkbox的對(duì)象組,
然后采用循環(huán)進(jìn)行check的設(shè)置。

注意的是 document.getElementsByName("Area"); 如果獲取的是checkbox,此時(shí)返回的是一個(gè)object【】;
所以在取 全選 checkbox的checked的值的時(shí)候應(yīng)該使用:
var chall = document.getElementsByName("checkall")[0];
才能獲取到全選checkbox對(duì)象,然后再通過 chall 。checked 來判斷是否 要進(jìn)行 全選或者 全不選。

當(dāng)然通過上面的獲取對(duì)象方法則可以進(jìn)行對(duì)checkbox的其他操作。


希望這些能夠?qū)Υ蠹矣兴鶐椭?/p>

如對(duì)本文有疑問,請(qǐng)?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會(huì)為你解答?。?點(diǎn)擊進(jìn)入論壇

發(fā)表評(píng)論 (1661人查看,0條評(píng)論)
請(qǐng)自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動(dòng)的言論。
昵稱:
最新評(píng)論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時(shí)間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號(hào)