Javascript操作DropDownList控件总结

  大家都知道,.NET中一些Web服务器控件解析并编译,最终被渲染的时候,其实是转化成了普通的html控件,比如<asp:LinkButton>控件就被渲染成了<a>锚点控件,这里要讲的DropDownList控件也一样,被渲染成了普通的select控件,在如下的asp.net页面中定义了一个web服务器控件DropDownList和一个普通的select控件(主要为了对比)。
ExpandedBlockStart.gif 代码
< asp:DropDownList ID  =   " ddlCities "  runat  =   " server " >
        
< asp:ListItem Value  =   " 0 " > 长沙 </ asp:ListItem >
        
< asp:ListItem Value  =   " 1 " > 北京 </ asp:ListItem >
        
< asp:ListItem Value  =   " 2 " > 天津 </ asp:ListItem >
        
< asp:ListItem Value  =   " 3 " > 漠河 </ asp:ListItem >
</ asp:DropDownList >
        
< select id  =   " ddlNames "  runat  = " server " >
        
< option value  =   " 0 " > James </ option >
        
< option value  =   " 1 " > Green </ option >
        
< option value  =   " 2 " > Lily </ option >
        
< option value  =   " 3 " > Lucy </ option >
</ select >  
  在浏览器中查看该页面,并点击查看源文件,不难看出,asp.net页面被渲染成了如下格式:
ExpandedBlockStart.gif 代码
< select name = " ddlCities "  id = " ddlCitys " >
    
< option value = " 0 " > 长沙 </ option >
    
< option value = " 1 " > 北京 </ option >
    
< option value = " 2 " > 天津 </ option >
    
< option value = " 3 " > 漠河 </ option >
</ select >
        
< select name = " ddlNames "  id = " ddlNames " >
    
< option value = " 0 " > James </ option >
    
< option value = " 1 " > Green </ option >
    
< option value = " 2 " > Lily </ option >
    
< option value = " 3 " > Lucy </ option >
</ select >  

 

  好了,接下来介绍一下要用javascript操纵DropDownList控件,首先得了解select(或者DropDownList)的两个最基本的属性,一个是value属性,一个是text属性,还有一个selectedIndex属性,用来标识当前选中的项(数字),具体可参见上面的示例代码。
  下面正式言归正传,主要介绍如下几点:
(1) 清空DropDownList控件中的值,其中ddlCities为要清空的DropDownList的ID。
  
document.getElementById( ' ddlCities ' ).options.length  =   0 ;

 

 (2) 判断DropDownList中是否有value为'objItemValue'的ListItem。

 

ExpandedBlockStart.gif 代码
function  isListItemExistByValue(objDdl, objItemValue)
{
    
var  isExist  =   false ;
    
for ( var  i  in  objDdl.options)
   {
    
if (i.value  ==  objItemValue)
    {
      isExist 
=   true ;
      
break ;
    }
  }
  
return  isExist;
}

 

  


(3) 判断DropDownList中是否有text为'objItemText'的ListItem。(采用了另一种for循环)


 

ExpandedBlockStart.gif 代码
function  isListItemExistByText(objDdl, objItemText)
{
    
var  isExist  =   false ;
    
for  ( var  i  =   0 ; i  <  objDdl.options.length; i ++ ) {
        
if  (objDdl.options[i].text  ==  objItemText) {
            isExist 
=   true ;
            
break ;
        }
    }
  
return  isExist;
}

 

 


(4) 向objDdl添加一个item,其中value为paramValue,text为paramText


 代码


(5) objDdl删除一个item,其中参数为value的值为paramValue


 代码


(6) objDdl删除多个item,其中参数为text的值为paramText


 代码


(7) objDdl删除当前选中项

function  removeSelectedListItem(objDdl)
{
    objDdl.options[objDdl.selectedIndex] 
=   null ;
}

 

 (8) 修改objDdl选项中value = "paramValue"的text为"paramText"


ExpandedBlockStart.gif 代码
// 修改objDdl选项中value = "paramValue"的text为"paramText"
function  changeItemText(objDdl , paramValue , paramText)
{
    
if  (isExistItemByValue(objDdl, paramValue))
    {
        
for ( var  i =   0  ; i <  objDdl.options.length ; i ++ )
        {
            
if (objDdl.options[i].value  ==  paramValue)
            {
                objDdl.options[i].text 
=  paramText;
                
break ;
            }
        }
    }
    
else
    {
        alert(
' 更新失败,不存在该项: '   +  paramValue);
    }
}

 

 (9) 设置objDdl中text为"paramText"的第一个Item为选中


ExpandedBlockStart.gif 代码
// 设置objDdl中text为"paramText"的第一个Item为选中
function  setSelectedItemByText(objDdl , paramText)
{
    
// 判断是否存在
     var  isExist  =   false ;
    
for  ( var  i  =   0 ; i  <  objDdl.options.length; i ++ ) {
        
if  (objDdl.options[i].text  ==  paramText) {
            objDdl.options[i].selected 
=   true ;
            isExist 
=   true ;
            
break ;
        }
    }
    
    
// 显示出来结果
     if ( ! isExist)
    {
        alert(
' 选择失败,不存在该项: '   +  paramText)
    }
}

 

 (10) 得到当前的选中项的value


// 得到当前的选中项的值value
function  getSelectedValue(objDdl) {
    
return  objDdl.value;
}

 

 (11) 得到当前的选中项的text


// 得到当前的选中项的值text
function  getSelectedText(objDdl) {
    
return  objDdl.options[objDdl.selectedIndex].text;
}

 

 (12) 设置objDdl中value = "paramValue"的item为选中


// 设置objDdl中value = "paramValue"的item为选中
function  setSelectedItemByValue(objDdl, paramValue) {
    objDdl.value 
=  paramValue;
}

 

 (13) 得到当前选中项的Index


// 得到当前选中项的Index
function  getCurrSelectedIndex(objDdl) {
    
return  objDdl.selectedIndex;
}



 

看这里,上面的代码写的比较凌乱,这里我把这些方法封装成一个对象,以后直接调用就可以了。


 var ddlHandler = {};


// 清空objDdl中的所有项
ddlHandler.truncate  =   function (objDdl) {
    objDdl.options.length 
=   0 ;
}

// 判断objDdl中是否存在value为paramValue的项(ListItem)
ddlHandler.isExistItemByValue  =   function (objDdl, paramValue)
{
    
var  isExist  =   false ;

    
for  ( var  i  =   0 ; i  <  objDdl.options.length; i ++ ) {
        
if  (objDdl.options[i].value  ==  paramValue) {
            isExist 
=   true ;
            
break ;
        }
    }
    
    
return  isExist;
}

// 判断objDdl中是否存在text为paramValue的项(ListItem)
ddlHandler.isExistItemByText  =   function (objDdl, paramText) {
    
var  isExist  =   false ;

    
for  ( var  i  =   0 ; i  <  objDdl.options.length; i ++ ) {
        
if  (objDdl.options[i].text  ==  paramText) {
            isExist 
=   true ;
            
break ;
        }
    }

    
return  isExist;
}

// 向objDdl添加一个item,其中value为paramValue,text为paramText
ddlHandler.addListItem  =   function (objDdl , paramValue , paramText)
{
    
// 首先判断是否已存在paramValue的项
     if ( this .isExistItemByValue(objDdl,paramValue))
    {
        alert(
' 添加失败,不能添加重复项: '   +  paramValue);
    }
    
else
    {
        
var  varItem  =   new  Option(paramText,paramValue);
        objDdl.options.add(varItem);
    }
}

// 向objDdl删除一个item,其中参数为value的值为paramValue
ddlHandler.removeListItemByValue  =   function (objDdl , paramValue)
{
    
// 首先判断是否存在该项,存在才删除
     if  ( ! this .isExistItemByValue(objDdl, paramValue))
    {
        alert(
' 删除失败,因为不存在该项: '   +  paramValue);
    }
    
else
    {
        
for ( var  i  =   0  ; i <  objDdl.options.length ; i ++ )
        {
            
if (objDdl.options[i].value  ==  paramValue)
            {
                objDdl.options.remove(i);
                
break ;
            }
        }
    }
}

// 向objDdl删除找到的item,其中参数为text的值为paramText
ddlHandler.removeListItemByText  =   function (objDdl, paramText) {
    
// 首先判断是否存在该项,存在才删除
     if  ( ! this .isExistItemByText(objDdl, paramText)) {
        alert(
' 删除失败,因为不存在该项: '   +  paramText);
    }
    
else  {
        
for  ( var  i  =   0 ; i  <  objDdl.options.length; i ++ ) {
            
if  (objDdl.options[i].text  ==  paramText) {
                objDdl.options.remove(i);
            }
        }
    }
}

// 删除objDdl当前选中的项
ddlHandler.removeSelectedListItem  =   function (objDdl)
{
    objDdl.options[objDdl.selectedIndex] 
=   null ;
}

// 修改objDdl选项中value = "paramValue"的text为"paramText"
ddlHandler.changeItemText  =   function (objDdl , paramValue , paramText)
{
    
if  ( this .isExistItemByValue(objDdl, paramValue))
    {
        
for ( var  i =   0  ; i <  objDdl.options.length ; i ++ )
        {
            
if (objDdl.options[i].value  ==  paramValue)
            {
                objDdl.options[i].text 
=  paramText;
                
break ;
            }
        }
    }
    
else
    {
        alert(
' 更新失败,不存在该项: '   +  paramValue);
    }
}

// 设置objDdl中text为"paramText"的第一个Item为选中
ddlHandler.setSelectedItemByText  =   function (objDdl , paramText)
{
    
// 判断是否存在
     var  isExist  =   false ;
    
for  ( var  i  =   0 ; i  <  objDdl.options.length; i ++ ) {
        
if  (objDdl.options[i].text  ==  paramText) {
            objDdl.options[i].selected 
=   true ;
            isExist 
=   true ;
            
break ;
        }
    }
    
    
// 显示出来结果
     if ( ! isExist)
    {
        alert(
' 选择失败,不存在该项: '   +  paramText)
    }
}

// 得到当前的选中项的值value
ddlHandler.getSelectedValue  =   function (objDdl) {
    
return  objDdl.value;
}

// 得到当前的选中项的值text
ddlHandler.getSelectedText  =   function (objDdl) {
    
return  objDdl.options[objDdl.selectedIndex].text;
}


// 设置objDdl中value = "paramValue"的item为选中
ddlHandler.setSelectedItemByValue  =   function (objDdl, paramValue) {
    objDdl.value 
=  paramValue;
}

// 得到当前选中项的Index
ddlHandler.getCurrSelectedIndex  =   function (objDdl) {
    
return  objDdl.selectedIndex;
}

 


 

 

 

 

转载于:https://www.cnblogs.com/zxher/archive/2009/12/28/1634467.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要给C# DropDownList控件添加输入搜索功能,可以使用以下步骤: 1. 在页面上添加一个文本框和一个DropDownList控件。 2. 给文本框添加一个onkeyup事件,每当用户输入内容时就会触发该事件。 ```C# <asp:TextBox ID="txtSearch" runat="server" onkeyup="searchDropDownList()"></asp:TextBox> <asp:DropDownList ID="ddlItems" runat="server"></asp:DropDownList> ``` 3. 在JavaScript中编写searchDropDownList函数,该函数将获取文本框中的内容并使用jQuery筛选DropDownList中的项。然后将过滤后的项重新绑定到DropDownList中。 ```JavaScript function searchDropDownList() { var input, filter, ul, li, a, i; input = $("#<%=txtSearch.ClientID %>").val().toUpperCase(); filter = input; var items = $("#<%=ddlItems.ClientID %> option"); for (i = 0; i < items.length; i++) { if (items[i].text.toUpperCase().indexOf(filter) > -1) { items[i].style.display = ""; } else { items[i].style.display = "none"; } } } ``` 4. 在页面加载时,以及DropDownList数据发生变化时,都需要调用searchDropDownList函数来刷新过滤结果。 ```C# protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { // 绑定DropDownList数据 BindDropDownList(); // 初始过滤 searchDropDownList(); } } protected void ddlItems_SelectedIndexChanged(object sender, EventArgs e) { // 数据变化时,刷新过滤结果 searchDropDownList(); } ``` 5. 最后,可以在CSS中为DropDownList添加样式以使其更容易被搜索。 ```CSS select { padding: 5px; margin: 0; border: 1px solid #ccc; box-shadow: none; font-size: 14px; line-height: 1.42857143; color: #555; background-color: #fff; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值