将.Net控件值传递给javascript函数

时间:2014-12-08 14:40:57

标签: javascript jquery asp.net function

我正在尝试将不同的值传递给javascript函数,具体取决于单击的按钮。

我在页面上有两个隐藏字段,我希望在点击hidA时使用第一个字段btnA的值,在{时使用第二个字段hidB值点击{1}}。

然后javascipt将读取该值。

示例

btnB

但是我无法在不破坏语法的情况下读取.Net控件值。

ASPX

onclick="test(22);"

Jquery的

<input id="btnA" type="button" value="A" onclick="test($('#<%= hidA.ClientID%>').val());"/>
<input id="btnB" type="button" value="B" onclick="test($('#<%= hidB.ClientID%>').val());"/>    

问题

如何将ASP.NET控件值传递给javascript函数?

3 个答案:

答案 0 :(得分:2)

您可以添加onclick属性服务器端,例如

protected void Page_Load(object sender, EventArgs e)
{
    btnA.Attributes.Add("onclick", "test($(" + hidA.ClientID + ").val());");
    btnB.Attributes.Add("onclick", "test($(" + hidB.ClientID + ").val());");                
}

当然,前提是两个input元素都在.aspx中正确设置了runat属性:

<input id="btnA" type="button" value="A" runat="server"  />
<input id="btnB" type="button" value="B" runat="server" /> 

以上将html发送回客户端:

<input type="hidden" name="hidA" id="hidA" value="22" />
<input type="hidden" name="hidB" id="hidB" value="33" />        

<input name="btnA" type="button" id="btnA" value="A" onclick="test($(hidA).val());" />
<input name="btnB" type="button" id="btnB" value="B" onclick="test($(hidB).val());" /> 

我认为是理想的输出。

答案 1 :(得分:1)

执行此操作的最简单方法是将ClientIDMode设置为隐藏字段上的静态,并发布&#39; A&#39;或者&#39; B&#39;在测试变量中。像这样:

<input id="btnA" type="button" value="A" onclick="test('A');"/>

然后在测试方法中,您从隐藏控件中获取值(而不是在调用本身中):

$("#hid" + parameterValue).val();

这是一个选择。但是,这种方式仅限于您推送给客户端的控件。但是,由于您已经在原始请求中创建了隐藏控件,因此我不认为这会成为一个问题。

答案 2 :(得分:1)

您是否考虑过将click事件移出控件?

<input id="btnA" type="button" value="A" cssClass="btnA hidBtn" />
<input id="btnB" type="button" value="B" cssClass="btnB hidBtn" />

<script type="text/javascript">
      jQuery(function($) {
           $(".btnA").click(function() {
               test($("#<%= hidA.ClientID %>").val());
           });
           $(".btnB").click(function() {
               test($("#<%= hidB.ClientID %>").val());
           });

           // Or you could try something like this
           $(".hidBtn").click(function() {
              var hidId = "#"+this.id.replace("btn","hid");
              test($(hidId).val());
           });
      });
</script>