2008-12-31 56 views
3

我在页面上有一个DropDownList和一个TextBox。当用户在DropDownList中选择“其他”选项时,我想在其右侧显示一个TextBox。我不想使用传统的PostBack技术。我希望这种互动成为客户端。最简单/最好隐藏/显示ASP.NET的客户端隐藏/显示

我知道我可以得到一个DOM元素的引用并将其样式设置为“display:none”或“display:”。我正在寻找的东西是内置于ASP.NET框架中的,用于处理类似这样的事情。我的意思是,在jQuery中这与$('controlID').hide一样简单。有没有可以做到这一点的控制扩展器? jQuery是ASP.NET框架的一部分吗?

回答

4

jQuery will be/is distributed with VisualStudio/ASP.NET MVC,虽然我不称之为框架的一部分。我认为你可以随意使用它并相信它会得到支持。

请注意,微软已经表示,他们将使用jQuery开发的主线,因此代码本身不会与从jQuery.com下载的内容不同,除了内置的Intellisense。

编辑:要设置您的功能,请从jquery.com下载代码。把它放在你的脚本文件夹中,或者存储javascript内容的地方。为它添加一个脚本引用到你的页面。使用jquery将onchange处理程序添加到下拉列表中,并且当下拉列表的值是其他时显示文本框,否则将其隐藏。以下示例假定other不是默认选择。如果您正在使用MasterPages或UserControls内部的runat =“server”控件,则需要在javascript函数中调整名称以解释ASP.NET所做的名称。为他们提供独特的CSS类并使用“.class”表示法而不是“#id”表示法引用它们可能更简单。

<script type="text/javascript" src="...pathtoscript../jquery.1.2.6.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#DropDownListID").bind('change', function() { 
      if (this.options[this.selectedIndex].value == 'other') 
      { 
       $("#TextBoxID").show(); 
      } 
      else 
      { 
       $("#TextBoxID").hide(); 
      } 
     }); 
    }); 
</script> 

    ... 

<select id="DropDownList"> 
    <option value='first'>First</option> 
     ... 
    <option value='other'>Other</option> 
</select> 
<input type='text' id='TextBox' style='display: none;' /> 
+0

需要什么,以获得jQuery的功能做?在这一点上,我不在乎intellisense。 – dtrick 2008-12-31 02:36:13

2

您还可以使用asp.net客户端框架(通过scriptmanager)获取对元素的引用。但是,你仍然需要使用正常的DOM操作。

$get('<%= myDropDown.ClientID %>').style.display = 'none'; 

只要确保您有脚本管理器引用。

对于这么简单的东西,我不认为这是值得参考的jQuery,但也许你有更大的计划;-)