asp客户端脚本的问题,郁闷致死

wandering_hawk 2005-04-12 03:18:07
也许这个问题很弱智,可是我的确是找了很长时间也没有找到解决办法。
比如说在登陆的时候,要验证输入的用户名不能为空
我知道这个验证函数怎么写,

问题是:怎么用?

我用的是vbscript
看了一些代码的写法是<input type=submit name=Submit onclick=check()>

但是,虽然弹出了对话框提示,但是仍然是submit了,也就是说即便是check()后仍然是向服务器提交了一次。
怎么做才能使如果不符合条件就不提交。

...全文
252 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
listry_cheng 2005-04-16
  • 打赏
  • 举报
回复
onclick="return check();" 这样是没有错的,还是Mark一下吧。不要把大家都骂了。
其实都产生了验证的效果而且不会把表单提交出去。

虽然我不明白你的浏览器为什么不行,不能用return。但是大家都有经验,都思考过了的。不信你搜一搜网上相关的验证的帖子。
wandering_hawk 2005-04-15
  • 打赏
  • 举报
回复
经过我的实验总结一下:
首先,上面大部分朋友的写法的确都能够有验证的效果,但是,其实除了两位朋友,其他的人都没有真正理解客户端验证的含义。
所谓客户端验证,就是在提交数据的时候对browser提交的数据验证合法性,如果合法则提交,不合法则提示并且不会提交,很多朋友这样写
<input type=submit onclik=check()> 或者<form onsubmit=check()>
这样的写法可以说是不完全正确的,因为虽然在数据不合法时会提示错误,但是browser仍然向server提交了数据,而没有做到不合法就不提交。

正确的写法如下:
1.<input type=button onclick=check()> 然后再check()里写上form.submit
2.<form name=form1>
function form1_onsubmit
..........
end function
注意:function的_onsubmit之前的名字必须与要提交的form的name相同

我奉劝大家回答别人问题的时候要先看清题目,然后经过大脑的思考再作出回答。
enjsky(郭志军) 我不得不佩服你的勇气,复制一下别人的代码就当作自己的回答。
wandering_hawk 2005-04-14
  • 打赏
  • 举报
回复
krfstudio()
的确没有必要,我只是在探讨问题而已
onetwofree 2005-04-13
  • 打赏
  • 举报
回复
对,你可以在check()里使用 formName.sumit来使用提交。

这个给另外一个方法你。

方法二。不改变input的type属性值submit
而使用
Function FormName_onsubmit()
FormName_onsubmit=False
if xxx then
不通过验证的话
Exit Sub
end if
FormName_onsubmit=True

End Function
wandering_hawk 2005-04-12
  • 打赏
  • 举报
回复
yegaofei(踏雪而歌)

一般是用javascript在客户端验证,然后服务器段用asp验证

不好意思,我是新手,有点不明白,javascript应该是asp采用的一种脚本语言吧,
那“服务器段用asp验证”是什么意思?

wandering_hawk 2005-04-12
  • 打赏
  • 举报
回复
lxcooi(Pentium 4)

能说得详细点吗?

就比如我在客户端控制username不能为空,怎么会产生欺骗?
wandering_hawk 2005-04-12
  • 打赏
  • 举报
回复
谢谢大家了,还有一点小疑问

很多朋友在onclick=后面写的都是return check()

但是,我试了,提示return类型不匹配,check()的代码我是拷贝listry_cheng(Listry) 的

而改成onclick=check就正常了,请问这是怎么回事?

为什么return的话有问题
fantiny 2005-04-12
  • 打赏
  • 举报
回复
点击submit的时候默认是true,所以需要在onclick事件里面加入return check();
check验证的时候,如果没通过就返回false,而返回false的话,浏览器是不会提交表单的。如果验证通过,你就可以return true了,这样就可以提交了。当然在javascript里面也可以自己写代码提交。就是xxx.submit();
yegaofei 2005-04-12
  • 打赏
  • 举报
回复
一般是用javascript在客户端验证,然后服务器段用asp验证
lxcooi 2005-04-12
  • 打赏
  • 举报
回复
有效性验证必须放在服务器端执行,否则有可能存在客户端欺骗。从而进攻你的程序。
iexapl 2005-04-12
  • 打赏
  • 举报
回复
表单你可以这样
<input type="button" value="提交" name="B1" ONCLICK="Checkdata">
VBscript可以这样写
<script language="VBScript">
<!--
Sub Checkdata()
if form1.user.Value = Empty then
Window.Alert"用户名没有填写"
Exit Sub
End if
form1.submit
End sub
-->
</script>
john_cncn 2005-04-12
  • 打赏
  • 举报
回复
将type改为button
krfstudio 2005-04-12
  • 打赏
  • 举报
回复
有必要必须使用 VBScript 吗?

有见过哪个浏览器只支持 VBScript 的而不支持 JavaScript 吗?
masm_silly 2005-04-12
  • 打赏
  • 举报
回复
也可以用JS来写,道理一样:
<script language=javascript>
function chkForm(form){
if(form.Author.value==""){
alert("请填写姓名");
form.Author.focus();
return false;
}
return true;
}
<form name="frm" method="post" action="qaAction.asp" onsubmit="return chkForm(this)">
姓名<input type="text" name="Author" class="input" maxlength="20"><br>
<input type="submit" name="Submit" value="提交">
</form>
libaisongtuye 2005-04-12
  • 打赏
  • 举报
回复
下面是我现在用的登陆,绝对好使,验证码部份换成你自己用的验证码显示,记得给分哦,呵呵
<form name="admininfo" method="post" action="chkadmin.asp" >
<table width="250" border="0" align="center" cellpadding="1" cellspacing="1" bgcolor="#6699ff">
<tr>
<td align="center"><font color="#FFFFFF">管理员登录</font></td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><br>
<table width="178" border="0" align="center" cellpadding="1" cellspacing="1">
<tr bgcolor="#FFFFFF">
<td width="64">管理员:</td>
<td width="107"><input name="admin" type="text" id="admin" size="12"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td>密 码:</td>
<td><input name="UserPassword" type="Password" id="UserPassword" size="12"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="64">验证码:</td>
<td><input name=passcode type=text id=passcode size=8> <img src="code.asp"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td colspan="2" align="center"><input onClick="return check();" type="submit" name="Submit" value="登 录">
  <input type="reset" name="Submit2" value="清 除" ></td>
</tr>
</table>
</td>
</tr>
</table>
</form>
</body>
</html>
<script LANGUAGE="javascript">
<!--
function checkspace(checkstr) {
var str = '';
for(i = 0; i < checkstr.length; i++) {
str = str + ' ';
}
return (str == checkstr);
}
function check()
{
if(checkspace(document.admininfo.admin.value)) {
document.admininfo.admin.focus();
alert("管理员用户名不能为空!");
return false;
}
if(checkspace(document.admininfo.UserPassword.value)) {
document.admininfo.UserPassword.focus();
alert("密码不能为空!");
return false;
}
if(checkspace(document.admininfo.passcode.value)) {
document.admininfo.passcode.focus();
alert("验证码不能为空!");
return false;
}
document.admininfo.submit();
}
//-->
</script>
wandering_hawk 2005-04-12
  • 打赏
  • 举报
回复
enjsky(郭志军)
你回答别人问题从来都不看清题目吗?
我说了用vbscript
enjsky 2005-04-12
  • 打赏
  • 举报
回复
<script language=javascript>
function chkForm(form){
if(form.Author.value==""){
alert("请填写姓名");
form.Author.focus();
return false;
}
return true;
}
<form name="frm" method="post" action="qaAction.asp" onsubmit="return chkForm(this)">
姓名<input type="text" name="Author" class="input" maxlength="20"><br>
<input type="submit" name="Submit" value="提交">
</form>
wandering_hawk 2005-04-12
  • 打赏
  • 举报
回复
onetwofree(One) 我明白你的意思,然后在check()这个函数里submit?
onetwofree 2005-04-12
  • 打赏
  • 举报
回复
关键你的form里有个input的type的属性是submit
你可以将他的type改为button
wandering_hawk 2005-04-12
  • 打赏
  • 举报
回复
声明一下:我用的是vbscript,谢谢大家帮我解决问题。

但是,如果你的回答根本就是没有经过思考、试验,随便乱说的话,那你还是不要回答好了。

mayi545(一直都在寻找一个影子 www.j345.com/mayi) 你这是回答问题吗?想蹭分吧?
underone(underone)、lightenvoy(光明使者)、LGEN() 你们写的代码你自己测试过吗?还是你们回答别人的问题向来都是既不经过大脑思考也不看请别人的问题所在?
加载更多回复(9)

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧