当前位置: 首页 > 编程笔记 >

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

蔡默
2023-03-14
本文向大家介绍JS在onclientclick里如何控制onclick的执行,包括了JS在onclientclick里如何控制onclick的执行的使用技巧和注意事项,需要的朋友参考一下

OnClientClick是客户端脚本,一般使用JavaScript,在客户端,也就是IE中运行,点击后马上执行

OnClick是服务器端事件处理函数,使用C#或者vb.net,在服务器端,也就是IIS中运行,点击按钮后,执行postback,之后再运行。

若想先调用了OnClientClick后就不在调用OnClick事件,应在OnClientClick事件里返回false.若不返回false,在执行了OnClientClick后,会继续调用OnClick事件!

实现方法如下:

<asp:Button ID="btn_Save" runat="server" Text="保存" CssClass="button_bak" OnClientClick="return whetherEmpty();" OnClick="btn_Save_Click" />
//JavaScript实现如下:
<script language="javascript" type="text/javascript">
function whetherEmpty()
{
//alert("KPI信息不能全为空!");
emptflag = false ;
var kpiName = document.getElementById("<%=txt_KPIName.ClientID%>").value;
var jobgoal = document.getElementById("<%=txt_JobGoal.ClientID%>").value;
var weight = document.getElementById("<%=txt_Weight.ClientID%>").value;
var standard = document.getElementById("<%=txt_Standard.ClientID%>").value;
if (kpiName == "" && jobgoal == "" && weight =="" && standard =="")
{
emptflag = true ;
}
if (emptflag)
{
alert("KPI信息不能全为空!");
return false;
}
}
</script>

若是OnClientClick="return whetherEmpty();" 没有return ,在JavaScript里即使return fales,onclick依然会执行!

下面给大家介绍onclientclick和onclick区别

其实有的时候需要客户端和服务端双重校验,为什么这么说呢? 比果说,一个用户名的文本框,在客户端我们通过JS校验,只能输入字母和数字,不能有特殊字符!通常情况下是没有问题的,但是总有那么一丢丢人想方设法的去“搞破坏” ,这个时候就需要进行双重校验了!说白了,就是服务端和客户端都进么校验!

比如说:Button有:OnClick事件和OnClientClick属性,前者一般就是服务端的点击事件!后者则是客户端的点击事件!

我们来做一个测试!在Default.aspx页面中添加如下代码!

<script language="javascript" type="text/javascript">
function buttonClick() {
alert("我是客户端点击事件");
return false; 
}
</script> 

页面代码:

<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="些Button是服务端控件,默认使用OnClientClick事件,请禁用浏览器的Js功能体验"
OnClick="Button1_Click" OnClientClick="return buttonClick();" />
<asp:Label ID="Label1" runat="server" Text=""></asp:Label>
</div>
</form> 

cs文件代码:

protected void Button1_Click(object sender, EventArgs e)
{
this.Label1.Text = "我是服务端点击事件";
}

大家运行看看是什么效果? 你可能会发现,只弹出了JS中的代码! 没错,这正是我们想要的效果,通过return false 来"屏蔽"服务端的校验!好处是什么? 就是不用刷新页面呀!

 类似资料:
  • 问题内容: 我有一个 同时 设置和属性的锚点。如果单击并启用了Javascript,我希望它 仅 执行和忽略。同样,如果禁用或不支持Javascript,我希望它遵循URL并忽略。以下是我正在执行的示例,该示例将执行JS并并发地执行链接(通常是执行JS,然后页面会更改): 最好的方法是什么? 我希望有一个Java脚本的答案,但是我会接受任何可以使用的方法,只要它可以工作,尤其是可以用PHP完成的方

  • 在我的实体中,我有双向的一对多关系,我想用mock.mvc编写集成测试。但是,在添加父级之前,我不能添加子级。出于这个原因,我希望首先运行AirportControllerTest,其次是RouteControllerTest,最后是FlightController。 有可能吗?或者如何处理这种情况?

  • 问题内容: 目前,我有一个Angular.js页面,它允许搜索并显示结果。用户单击搜索结果,然后单击“后退”按钮。我希望再次显示搜索结果,但是我不知道如何触发搜索执行。详细信息如下: 我的Angular.js页面是一个搜索页面,带有一个搜索字段和一个搜索按钮。用户可以手动键入查询并按下按钮,然后会触发ajax查询并显示结果。我用搜索词更新了网址。一切正常。 用户单击搜索结果,然后转到另一个页面-效

  • 问题内容: 如果将多个行放在一行中,是否可以减少文本之间的间距?我们可以设置框架,字体大小和行数。我想缩小该标签中两行之间的间距。 问题答案: 我考虑过要在此答案中添加一些新内容,因此我感觉还不错……这是一个 Swift 答案: “简短的回答:您不能。要更改文本行之间的间距,您将必须继承UILabel子类并滚动自己的drawTextInRect或创建多个标签。” 这是一个非常古老的答案,其他人已经

  • 硒的功能在哪里? 我在某个地方读到,语言绑定或API提供了胶水代码,以便在Java中使用Selenium。 胶合代码或绑定代码:连接不兼容的软件组件的代码。 null

  • 问题内容: 在Windows上制作mysqldump非常简单,只需: 打开并放入mysqldump uroot ppassword数据库> c:/data.sql 这将为所需的数据库生成一个SQL转储文件。 我正在编写一个控制台应用程序,因此我可以运行以下命令: 我尝试以下代码无济于事: 如何启动进程并成功发送命令? 问题答案: 为什么不直接调用mysqldump是有原因的? 如果 是 有原因的,