我正在尝试将不同的值传递给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函数?
答案 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>