如何在链接按钮的OnClientClick中调用java脚本函数(在.cs中)
How can i call java script function(in .cs) in the OnClientClick of the link button?
我在.cs文件中写这样的脚本
StringBuilder script = new StringBuilder();
script.Append("<script type='"text/javascript'"> function submitform(){");
script.Append(" document.forms['" + ((HtmlGenericControl)frm).Attributes["id"] + "'].submit();} </");
script.Append("script>");
如何在链接按钮的OnClientClick
中调用此函数?
LinkButton hl_process = new LinkButton();
hl_process.OnClientClick = ""
第1版:
protected Control CreateCommForm()
{
HtmlGenericControl frm = new HtmlGenericControl("form");
frm.Attributes.Add("id", "sal");
frm.Attributes.Add("method", "post");
frm.Attributes.Add("action", "https://------");
/////////////////////////////////////////
HtmlGenericControl hdn_sal_a = new HtmlGenericControl("input");
hdn_sal_a.Attributes.Add("id", "hdn_sal_a");
hdn_sal_a.Attributes.Add("name", "hdn_sal_a");
hdn_sal_a.Attributes.Add("type", "hidden");
hdn_sal_a.Attributes.Add("value", Session["emp_num"].ToString());
/////////////////////////////////////////
HtmlGenericControl hdn_sal_b = new HtmlGenericControl("input");
hdn_sal_b.Attributes.Add("id", "hdn_sal_b");
hdn_sal_b.Attributes.Add("name", "hdn_sal_b");
hdn_sal_b.Attributes.Add("type", "hidden");
hdn_sal_b.Attributes.Add("value", Session["user_name"].ToString());
frm.Controls.Add(hdn_sal_a);
frm.Controls.Add(hdn_sal_b);
column1.Controls.Add(frm);
return frm;
}
将关注点分开如果将应用程序移动到java
或ruby
,则应用程序的可视化部分不应受到影响。这就是separate of concerns
。
在客户端中编写客户端脚本,而不是在cs文件中:
$('#<%= hl_process.ClientID %>').click(function(){
...
$('#formId').submit();
// if the button inside the form:
this.form.submit(); // HTML5
// Or:
$(this).closest('form').submit();
// if the button not inside the form :
var class = $(this).attr('class');
$('form.' + class).submit();
});
使用jquery绑定到点击事件,而不是在服务器端执行此操作:
<a href="#" class="blah">Submit Me</a>
然后在javascript中,类似于:
<script type="text/javascript">
$('.blah').click(function() {
document.forms[0].submit();
});
</script>
编辑:
虽然您可以使用codeehind生成UI元素,但这并不是asp.net的方式。如果必须重复生成控件,请使用中继器。事实上,创建多个表单也不是asp.net的方式,因为它假设只有一个表单在服务器上下文中运行,而其他所有表单在提交时都绑定到一个事件。不管怎样,你似乎还在学习asp.net,可能是从PHP或类似的东西开始的。
为了满足您的请求,我建议您不要在服务器端生成JS。为表单指定不同的类名,并使用上面相同的方法。提交表单不需要LinkButton
,一个简单的锚<a>
就可以了。
您可以使用ClientID
属性(如果不使用类),但必须首先将父控件附加到页面上,算法才能生效。
所以,你的代码应该是这样的:
protected Control CreateCommForm()
{
...
column1.Controls.Add(frm);
HtmlGenericControl a = new HtmlGenericControl("a");
a.Attributes["onclick"] = "$('#" + frm.ClientID + "').submit();";
a.InnerText = "Submit me";
frm.Controls.Add(a);
return frm;
}
替代方式(更好地分离关注点)
protected Control CreateCommForm()
{
...
column1.Controls.Add(frm);
HtmlGenericControl a = new HtmlGenericControl("a");
a.Attributes["class"] = "submitter";
a.InnerText = "Submit me";
frm.Controls.Add(a);
return frm;
}
在javascript中,我们找到父窗体并提交它(可以在静态js文件中):
<script type="text/javascript">
$('.submitter').click(function(
$(this).parents('form').submit();
));
</script>
相关文章:
- 为什么我的控制器没有启动函数.js脚本
- 在Debian中运行包含load()和print()函数的JS脚本
- 无法在java脚本中调用图像的点击事件函数
- AngularJS:如何使用java脚本函数更改跨度的ng-show条件
- 无法将java脚本函数与Panel'绑定;s OnLoad事件
- 从我自己的脚本中包含的Javascript文件中调用一个函数
- 从 java 脚本调用函数时 PHP 中出错
- 如何创建php函数或任何脚本/jquery Javascript,使我能够获取与复选框关联的值并添加它们
- 将javascript函数传递给.php脚本
- 为什么当我需要位于顶部的函数时,在脚本中的某些点上没有定义函数
- 如何将类型和函数传递给JSR-223脚本
- 如何减少数组的脚本中的函数
- Java脚本函数中的PHP(PCRE)验证
- 在HTML JavaScript头部分运行Google脚本函数
- jQuery函数脚本
- JavaScript添加函数脚本 - 有人可以解释一下
- 历史记录 api 状态更改函数脚本在每次发生更改时复制函数调用
- 在.html文件之外执行函数/脚本
- replaceAll函数:脚本太长而无法执行
- 中的回调函数.脚本的移动()