繁体   English   中英

从JavaScript访问ASP.NET控件时出现问题

[英]Problems accessing ASP.NET Controls from JavaScript

很抱歉这个愚蠢的基本问题。 但是我真的不知道如何解决这个问题。 我有ASP控件(一个TextBox和一个DropDownList )。 现在,我需要访问TextBox value属性以及DropDownList SelectedIndex属性。 这应该很简单:

对于TextBox

document.getElementById("<%= myControl.ClientID >").value

对于DropDownList

document.getElementById("<%= myControl.ClientID %>").selectedindex

但是在Visual Studio 2008中,当我编写这些代码时,它不起作用。 我找不到相应控件的任何valueselectedindex属性。 我不明白这一点,因为在大多数论坛和教程中,它们都是以我提到的简单方式提出的。

HTML代码:

<div> <asp:TextBox ID="myText" runat="server" /> <asp:DropDownList ID="myList" runat="server" /> </div> 

还有其他方法吗,或者我只是在这里想念什么?

首先, jQuery可以帮助您编写很多javascript,您应该使用此路径。

要回答您的问题,您不仅需要使用MyControlId.ClientID ,还需要使用MyControlId

例如:

var t = document.getElementById('<%= myTextBoxID.ClientID %>').value;
alert(t);  // textbox value

var d = document.getElementById('<%= myDropDownID.ClientID %>'),
    dSelected = d.options[d.selectedIndex].value;
alert(dSelected); // dropdown value

使用jQuery,这将仅仅是:

var t = $('#<%= myTextBoxID.ClientID %>').val(),   // for your textbox
    d = $('#<%= myDropDownID.ClientID %>').val();  // for your selectbox 
alert(t ' --> ' + d);

接缝处,从注释中您仍然没有运气,那么问题必须出在控件或名称本身中,请尝试以下操作以调试问题:

假设您有:

<asp:TextBox runat="server" id="MyTextBox" Text="Hello" />

在该行的正下方写下:

<h2><%= MyTextBox.ClientID %></h2>

并打开浏览器的检查器(Firebug或IE Dev工具),然后运行javascript以查看是否获得Hello字符串,如下所示:

注意:我使用了MyTextBox ,请将其更改为您在<h2>标记内获得的名称

在此处输入图片说明

个人而言,我会使用jQuery的 ,而不是标准的JavaScript,然后看看这个问题如何与它找到你的元素。

编辑:如果您以前没有使用过jQuery,请确保将代码包装在其ready块中,否则它可能找不到您的元素:

$(document).ready(function() {
  // work with your element ID here
});

尝试使用单个标点符号。

document.getElementById('<%= myTextBox.ClientID %>').value 

几个答案推荐jQuery但我认为您仅应在需要时使用它。 如果您只是从元素中获取价值,那么就无需在您的网站上引入新的库。 如果您打算使用大量的Javascript,动画等。那么jQuery就有意义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM