js触发asp.net的Button的Onclick事件应用_javascript技巧

在asp.net引入事件驱动之后,在一个页面上很容易解决多个按钮触发不同事件的问题,避免了在asp中需要多个form或者通过js脚本来控制的麻烦。

asp.net带来便利的同时,也带来一个问题。在实际应用中一个页面存在多个按钮的情况并不多。用户习惯于在输入框输入内容之后,直接按回车就提交表单了。由于asp.net采用的是事件驱动模式,所以默认用户按回车并没有触发按钮的onclick事件。用户按回车也不是没有提交表单,通过httpwath可以看到,实际上页面表单是提交到了form下的action页面,只不过没有触发onclick事件而已。

在asp.net事件驱动模式下面,要实现通过回车来触发事件,必须要借助js脚本来实现。
在asp.net的aspx页面中,form的代码:

复制代码 代码如下:

<form id="form1" runat="server">

但在访问页面的源代码中可以看到:

复制代码 代码如下:

<form name="form1" method="post" action="Default.aspx" id="form1">

所以在输入框默认直接按回车,其实就是把表单提交到了form的action对应的页面,而并没有触发任何事件。
奇怪的地方:当一个aspx页面上没有使用web控件的时候,在输入框里按回车,默认是不会触发任何一个button按钮的onclick事件;但当页面上有使用web控件的时候,在输入框里按回车,默认会触发第一个button的onclick事件。【这里的第一指页面代码中最先出现的button控件,包括web控件内的button控件】
下面说说如何通过js来触发button按钮的onclick事件。
默认的button控件,在html中的代码是这样的:

复制代码 代码如下:

<input type="submit" name="Button1" value="Button" id="Button1" />

实际上点击这个button触发的onclick事件调用了一个js脚本:__doPostBack(eventTarget, eventArgument)
button 控件有个属性:UseSubmitBehavior,默认是true,当你修改为false的时候,再去看html的源代码,就能清楚的看到调用的js脚本函数。

复制代码 代码如下:

<input type="button" name="Button1" value="Button" onclick="javascript:__doPostBack('Button1','')" id="Button1" />

生成的js脚本:

复制代码 代码如下:

<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1; function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit(); }
//]]>
</script>

了解了这块内容,要处理输入框按回车触发button的onclick事件就简单的多了,就是截获输入框按回车的这个动作,然后通过js调用__doPostBack这个函数就OK了输入框:

复制代码 代码如下:

<input name="TextBox1" type="text" id="TextBox1" onkeydown="return KeyDown('Button1');" />
<input type="submit" name="Button1" value="Button" id="Button1" />

js脚本

复制代码 代码如下:

function KeyDown(btn) {
if (event.keyCode != 13) //按键不是enter键 return; else //按键是enter键 try {
__doPostBack(btn, '');
return false; catch (e) {
alert(e);
return; }
}

如果要输入框和button控件是在web控件里的,就需要特别注意:
控件中的button控件生成的html代码:

复制代码 代码如下:

<input type="submit" name="WUC11$Button2" value="Button" id="WUC11_Button2" />

__doPostBack中用到的是input按钮的name属性,web控件中button,在生成的html代码里会加上控件的ID,所以传递的 button名称不要写错了。

时间: 2024-09-17 04:52:18

js触发asp.net的Button的Onclick事件应用_javascript技巧的相关文章

window.location.href = window.location.href 跳转无反应 a超链接onclick事件写法_javascript技巧

错误写法 , 主要是在 href="#"这里 复制代码 代码如下: 错误写法 , 主要是在 href="#"这里 脚本如下 复制代码 代码如下: if (data == "发送成功") {                    alert(data);                    window.location.href = window.location.href;                } 正确的写法  href 后面跟一个

JS在onclientclick里如何控制onclick的执行_javascript技巧

OnClientClick是客户端脚本,一般使用JavaScript,在客户端,也就是IE中运行,点击后马上执行 OnClick是服务器端事件处理函数,使用C#或者vb.net,在服务器端,也就是IIS中运行,点击按钮后,执行postback,之后再运行. 若想先调用了OnClientClick后就不在调用OnClick事件,应在OnClientClick事件里返回false.若不返回false,在执行了OnClientClick后,会继续调用OnClick事件! 实现方法如下: <asp:Bu

new- 在js中引入movieClip后 button点击事件里的for循环失效!

问题描述 在js中引入movieClip后 button点击事件里的for循环失效! /** * Created by Administrator on 2015/5/27. */ var stage,image,btn1,btn2; var image_x = 200; var image_y = 20; var step_x; var step_y; var arr_x_r = []; var arr_x_l = []; var arr_y = []; var arry = []; wind

js动态添加的DIV中的onclick事件简单实例_javascript技巧

最简单的是这样: <input type="button" onclick="alert(this.value)" value="我是 button" /> 动态添加onclick事件: <input type="button" value="我是 button" id="bu"> <script type="text/javascript&quo

asp.net下利用js实现返回上一页的实现方法小集_javascript技巧

方法一: 在asp.net的aspx里面的源代码中 <input type="button onclick="javascript:window.history.go(-1);"value="返回上一页"> 浅析:这个是用了HTML控件,通过一个onclick的事件,调用了javascript中的一个方法就可以了.这个是最简单的了,也同样适用于静态页面,ASP页面等. 方法二: 利用Reponse.write 如果你对ASP有一定的了解,那么对

app-SlideMenu和button的onClick事件冲突

问题描述 SlideMenu和button的onClick事件冲突 app主页面有一个左侧滑动菜单,在5.0以上的系统上,当侧滑菜单滑动出来以后,主界面的Button的点击事件失效了 解决方案 textbox的OnTextChanged事件和button的OnClick事件Android开发之button的onClick事件学习 解决方案二: http://www.douban.com/note/151424703/

Android中button的onClick事件几种方法

Android中button的onClick事件几种方法 利用三种方法,学习button的监听事件. 方法一源码如下: package com.example.androidtest; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.widget.Button; import android.

原生JS操作网页给p元素添加onclick事件及表格隔行变色_javascript技巧

1. 给网页中的所有p元素添加onclick事件: 复制代码 代码如下: <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> <head> <title>Insert title here</title> <!-- <script src="jQuery/jquery-1.10.2.

js实现Select列表各项上移和下移的方法_javascript技巧

本文实例讲述了js实现Select列表各项上移和下移的方法.分享给大家供大家参考.具体如下: 这里介绍Select列表各项上移和下移的Js代码,可以手功排序,以前我们都见到过的,从事WEB编程的朋友经常会用得到. 运行效果如下图所示: 在线演示地址如下: http://demo.jb51.net/js/2015/js-select-move-up-down-codes/ 具体代码如下: <html> <head> <title>Select列表各项上移和下移</t