2015-09-16 11 views
0

我对jQuery和asp.net(VB)很少有经验。asp:hidden无法在后面的代码中访问

我想实现的是这样的:
1.我的页面几乎没有文本框,并且面板包含三个标签,一个GridView和一个HiddenField。
2.当页面加载隐藏面板
3.在页面,文本框内部用户点击,然后按下F2键
4. jQuery的感测F2键,并且提取文本框类和值
5.还HiddenField/HiddenBoxID值被设置为文本框类
6.触发一个按钮的点击事件
7.现在在背后提取hiddenID值代码,并做进一步处理。第
8.确保面板可见

我的jQuery看起来是这样的:

// Extract TextBox ID and Text Value 
var currentClass = $(this).attr('Class'); 
var currentVal = $('.' + currentClass + '').val(); 
$('#HiddenBoxID').val(currentClass); 
$("#helpButton").trigger('click'); 

我helpbutton代码如下所示:

Dim HuntBoxID As String 
HuntBoxID = HiddenBoxID.Value 

这里的问题是,当面板被设置为可见= true,那么我能够得到的jQuery HiddenBoxID值后面的代码,但是当我做该面板可见= false,然后我无法从jQuery发送值到后面的代码。我不知道为什么?我使用chrome浏览器并在调试控制台(F12)中可以看到在currentClass和currentVal中设置的值。
有人可以告诉我如何实现上述提及。
也可以有人告诉我我做错了什么,一些代码示例将非常有帮助。

回答

2

当您将控件的Visible属性设置为false时,该控件的HTML标记都不会发送到客户端。就客户而言,该控制不存在。您可以通过查看客户端上的HTML源来进行验证。

而不是操纵Visible属性,使用CSS样式。这是在C#中,但VB.NET语法应该是类似的:

HiddenBoxID.Style.Add("display", "none"); 

当您使用CSS样式操纵它,标记仍将被发送到客户端,因此,你可以使用后显示元素客户端代码。例如,使用jQuery:

$('#HiddenBoxID').show(); 
+0

我试着做与asp:面板相同,首先我显示:无页面加载时(在aspx本身)然后,随着页面加载完成我点击文本框内,然后我打电话给我的jQuery功能,我在哪里我尝试做display:block,在代码背后也做了同样的事情。这样做的结果是,我在jQuery中获得了textbox类和textbox的值,但是当我在后面的代码中访问它时,它变得空了。 – Abb

+0

@Abb这可能与您无关,可能是由于您如何加载页面。很难说,因为你没有提供[MCVE](http://stackoverflow.com/help/mcve)。 – mason

0

它已经一段时间,因为我已经做了一些像你提的,特别是使用客户端的JavaScript/jQuery的......但我的猜测是,你无法获得客户端ID,因为asp.net甚至没有将控件发送到客户端,因为它可见= false。

我完全可能是这个错误...但是当你说你立即隐藏页面加载面板时......我假设你在代码背后做了那个严重的一面,对吧?也许尝试将其设置为隐藏在jQuery中。换句话说,确保控件发送到客户端,然后使用jQuery立即隐藏它。

要看的另一件事是击中F12,看看您的隐藏的HTML是否在客户端的源代码中可见。如果不是,那么asp.net甚至不会将控制权发送给您的客户端,因此您无法获得客户端ID。