JavaScript初体验之冲出迷雾,我四个多小时的经验教训_AX
当JavaScript与ASP.NET结合,一些神奇的事件就发生了.
垃圾玩意,上传个图片都上传不了,........我用文字叙述吧!
【需求】
一个html文本框(客户端控件),一个Button(服务器端控件),引发的四个多小时的故事....
我要在按下Button时,判断文本框是否输入了内容,如果内容为空,执行一个提示必须输入内容的动作,否则,执行相应事件.
【过程】
既然我们知道了javascript的好,那当然要用一下它了,先写脚本
username:文本框的name
loginstatwrong:是一个要显示必须输入内容的<li></li>的 id,可以不用管它.
function isUserNameNull()
{
if(document.all("username").value=="")
{
document.getElementById("loginstatwrong").innerHTML="用户名不能为空!";
document.getElementById("loginstatwrong").style.display="block";
return false;
}
else
{
formGetPWD.action="getPWD.aspx?username="+document.all("username").value;
formGetPWD.submit();
}
}
【问题】
那么我现在要在Html里给Button加入 onclick=isUserNameNull()事件,
同时,又要为Button在后置代码CodeBehind里加上按钮单击事件,那么
无论文本框有无内容,CodeBehind里的事件都要执行.,,,
我怎么实现当文本框内无内容时,单击Button只在客户端用javascript处理,而当文本框不为空时,就把文本框的内容上传到服务器上进行处理呢?
【解决问题】
问同事,研究出两个可行方案:①把Button变为客户端控件,然后在Page_Load里通过传递来的参数进行判断处理.
有点复杂,但还是发挥了javascript的优势,不理想.
②把文本框转化为服务器端控件,加个不能为空的验证控件就OK了,靠,这个还用说,菜鸟都知道.
上网查资料:搜了老半天也没有这方面的东西,难道大家都没有这个问题?还是大家都不屑于这个问题
服务器控件的JavaScript事件处理与其后置代码的同时存在时的处理(这个是我想用的本文的另一个标题)
既然不行,还是问问我的Boss吧,真不是盖的,Boss就是boss,三言两语就把我打发了
Boss曰:在后置代码里让Button调用javascript不就行了.(后置代码里调用脚本?还可以这样??菜鸟又涨见识了)还热心的帮我写了这行代码:
this.Submit1.Attributes.Add("onclick","isUserNameNull();");
注意:他回到自己座位上又补充了一句,你最好在后面加个return,我当时没有在意,哪里加return也不清楚,这样我又调试了一个多小时问题还是没有解决,后来突然我又想到了Boss说的return来,难道另有玄机?????
找来个猫:this.Button1.Attributes.Add("onclick","return confirm('你确定要删除吗?')");
画只虎:this.Submit1.Attributes.Add("onclick","return isUserNameNull();");
---------困扰心头多时的问题解决了!!!!!!!!!!!!
【总结】
①Boss的话每一句都是金玉良言,落掉一句都不行!!
晚了,明天待续....
②return 表示只有在执行formGetPWD.submit(); 后才与服务器进行交互,不写return的话,执行完脚本后肯定会与服务器交互.
③原来脚本还可以被后置代码调用.下面就是调用的isUserNameNull()方法.
Submit1.Attributes.Add("onclick","return isUserNameNull();");
④通过研究这个问题,我进行了多次跟踪,更进一步的清楚了网页调用的详细过程.
⑤要不择手段的请教别人,不要怕被笑话菜.
少帮主的斧头好久不饮血了!