新人求助:关于页面异步验证,麻烦大神帮忙解答一下

问题描述

我的页面功能是:一个输入框,用户输入信息之后,我要进行异步验证,post信息到我的ashx去验证信息,(我用的是validate里的remote属性)失去焦点、keyup、提交表单都会触发验证,一般情况下可以正常使用。现在问题来了:当我没有给予过这个输入框焦点的情况下,(有的情况下需求是帮使用者填充一些已知信息在输入框内,或者由于一些特殊原因,所以有可能使用者压根不用编辑输入框,所以不曾给予输入框焦点),直接点击提交按钮,页面只是刷新了一下,并没有走按钮的后台方法。设断点跟下来发现此时只是post信息到ashx,ashx返回验证结果,之后回到页面pageload方法。而我只要编辑一下输入框里内容,再点击按钮,就一切正常了。请问在不改动需求的情况下,怎么解决这个问题呢?

解决方案

解决方案二:
validate部分代码$("#form1").validate({rules:{"<%=txtMobile.UniqueID%>":{required:true,isMobile:true,remote:{type:"post",url:"/checkinformation.ashx",data:{validateType:"IsMobileCam",campaignName:function(){return'<%=campaignName%>';},mobile:function(){return$.trim($("#<%=txtMobile.ClientID%>").val());}},dataType:"html",dataFilter:function(data,type){if(data=="true")returntrue;elsereturnfalse;}}},

解决方案三:
完全没看懂需求你验证的是什么,不是文本内容是否合法吗,文本根本没有编辑过,它必然是合法的,还验证什么
解决方案四:
引用2楼Z65443344的回复:

完全没看懂需求你验证的是什么,不是文本内容是否合法吗,文本根本没有编辑过,它必然是合法的,还验证什么

谢谢解答,上面我没说清楚的地方我再描述一下需求就是自动填充的内容还是需要验证的,比如:我用我的手机号登录了页面,去报名一个活动,(这里报名和注册是两回事)报名的手机号我可以填充我的,也可以填充其他人的,为别人报名(需要短信验证码),我现在是为使用者把报名手机号自动填充成他登录的手机号,但是他的手机号有可能已经被别人报名过了,不能重复报名,所以需要验证此信息
解决方案五:
自己顶一下……
解决方案六:
web开发第一课,永远不要相信客户端代码,所以不管你在文本框失去焦点或者keyup事件或者提交表单的时候做了什么验证,在你的.ashx中都需要再验证一次,客户端的验证是可以没有的,加客户端验证只是为了更好的用户体验,服务器端的验证才是必须的。
解决方案七:
引用5楼CityBird的回复:

web开发第一课,永远不要相信客户端代码,所以不管你在文本框失去焦点或者keyup事件或者提交表单的时候做了什么验证,在你的.ashx中都需要再验证一次,客户端的验证是可以没有的,加客户端验证只是为了更好的用户体验,服务器端的验证才是必须的。

谢谢提示,的确,除了客户端前台验证,后台也是有验证的,只是现在这个坎过不去。我要怎样才能又让他验证了没有获得过焦点的输入框,又能执行后台button方法呢?
解决方案八:
点击按钮的时候做同步验证
解决方案九:
点击提交按键事件里。在验证一次。
解决方案十:
话说,判断手机号是否已经在数据库中存在,这个明显是个后台验证,需要访问数据库的你纠结前台验证干嘛?前台验证不过是验证一些字符串是否合法,如果手机号输入的根本不是数字,就根本没必要把数据提交到服务器再回发回来,直接告诉用户不合法就完了
解决方案十一:
前台验证,不过是验证一些信息是否为空,如果必填项为空,不必发送数据,直接告诉用户需要填写,都填写全了,再服务端验证一次看是否真正合法前台验证也可以直接让非法字符无法录入进文本框里总之,前台验证只是验证字符串是否符合规范,不要再去访问后台的东西后台的东西就应该放到后台验证里去
解决方案十二:
引用9楼Z65443344的回复:

话说,判断手机号是否已经在数据库中存在,这个明显是个后台验证,需要访问数据库的你纠结前台验证干嘛?前台验证不过是验证一些字符串是否合法,如果手机号输入的根本不是数字,就根本没必要把数据提交到服务器再回发回来,直接告诉用户不合法就完了

这个是需求问题,我也没有办法,要求的就是用户输入完了马上显示出来这个手机号能不能用,当然了,后台也是有判断的,这个是必须的,因为前台的验证很容易跨越过去
解决方案十三:
引用10楼Z65443344的回复:

前台验证,不过是验证一些信息是否为空,如果必填项为空,不必发送数据,直接告诉用户需要填写,都填写全了,再服务端验证一次看是否真正合法前台验证也可以直接让非法字符无法录入进文本框里总之,前台验证只是验证字符串是否符合规范,不要再去访问后台的东西后台的东西就应该放到后台验证里去

谢谢解答,这也是种思路,不过现在需求限制。我更想了解的是怎么解决这个post之后就不走后台方法的问题(之前我所说的特殊情况下)
解决方案十四:
不客气的说,你这个需求有点问题,前台判断几乎都是通过正则式判断是否合法,至于数据是否重复,当然必须到后台判断,至于你说的那种效果,我想也许你用一个label+textchanged事件或者类似的方法,然后通过页面局部刷新,应该可以办到,但是归根结底,不可能谁可以不通过后台数据库就能判断数据是否重复的
解决方案十五:
引用13楼wzhenhang的回复:

不客气的说,你这个需求有点问题,前台判断几乎都是通过正则式判断是否合法,至于数据是否重复,当然必须到后台判断,至于你说的那种效果,我想也许你用一个label+textchanged事件或者类似的方法,然后通过页面局部刷新,应该可以办到,但是归根结底,不可能谁可以不通过后台数据库就能判断数据是否重复的

不是不通过后台,我用的是前台post信息到ashx,ashx再进行判断,给页面返回结果
解决方案:
文本框失去焦点的时候做ajax异步验证,点击按钮的时候再次做ajax同步验证,后台处理的时候再次做验证。
解决方案:
除了异步验证,再在提交的时候验证输入框的信息是否正确,否则给予焦点,returnfalse;

时间: 2024-02-04 20:29:24

新人求助:关于页面异步验证,麻烦大神帮忙解答一下的相关文章

指针-这道题可以用折半查找的办法做吗?麻烦大神帮忙解答一下吧!!!谢谢!!!

问题描述 这道题可以用折半查找的办法做吗?麻烦大神帮忙解答一下吧!!!谢谢!!! 有一个已经排好序的数组.现输入一个数,要求按原来的规律将它插入数组中, 插入之后依然有序.指针实现 解决方案 插入数组意味着需要将数组插入位置后面的元素全部搬动一次,相当低效. 这里最好使用链表,当然更好的是使用二叉排序树. 解决方案二: 非要这么做也可以,参考 http://blog.csdn.net/xiaofeige567/article/details/26879075 文章是用的顺序查找,按照你说的折半查

浏览器-jsp页面使用ip打开页面错乱,求大神们解答

问题描述 jsp页面使用ip打开页面错乱,求大神们解答 20C 我做完的jsp页面,使用localhost/项目名 打开没有问题,但是用ip/项目名 打开页面会错位 我主页用了ifream,然后css中right,left都失效了测试浏览器:火狐,谷歌下不会出现这个问题,但是ie9,360浏览器,QQ浏览器,猎豹浏览器会出现这个问题跪求求大神给出解决方案 解决方案 应该是兼容模式和非兼容模式引起的问题.你可以用ie9在localhost和ip下,按F12看看都运行在哪种模式下.如果是兼容模式引起

alert-点击提交按钮的时候没有反应,麻烦大神帮忙看一下是什么问题

问题描述 点击提交按钮的时候没有反应,麻烦大神帮忙看一下是什么问题 <!-- .STYLE1 {color: #FF0000} --> ? function check() { if (document.FORM10.zh.value=="") { alert("用户名必填!"); document.FORM10.zh.focus(); return false; } FORM10.submit(); } 信息录入 账号: 密码: 姓名: 科室: &qu

图片-刚开始接触spring security,麻烦大神帮忙看一下哪的问题

问题描述 刚开始接触spring security,麻烦大神帮忙看一下哪的问题 解决方案 jdbc驱动配置不正确.检查下.

mysql-mySQL触发器编写,麻烦大神帮忙,急急急

问题描述 mySQL触发器编写,麻烦大神帮忙,急急急 例如一个表user 两个字段id和name,id为主键且自增.现在如果在user表里面插入一个数据,如果插入的name为 张三,那么再在这个表里插入一个name为 李四的记录.请问这个触发器怎么写.是mysql数据库 解决方案 create trigger trigger_变量名 on user for insert as insert into user values('李四'); go --过后在执行你的插入操作,在查询你就会发现数据里面

使用LodopFuncs控件打印,页面一直显示需要升级是什么原因呢?求大神帮忙解答!!!!

问题描述 使用LodopFuncs控件打印,页面一直显示需要升级是什么原因呢?求大神帮忙解答!!!! 打印控件需要升级!点击这里执行升级升级后请重新进入.打印控件需要升级!点击这里执行升级升级后请重新进入.打印控件需要升级!点击这里执行升级升级后请重新进入.打印控件需要升级!点击这里执行升级升级后请重新进入.打印控件需要升级!点击这里执行升级升级后请重新进入.打印控件需要升级!点击这里执行升级升级后请重新进入. 测试一下:查看本机是否安装控件若只打印<表单一>看一下打印预览可直接打印也可选择打

java用openoffice处理excel转pdf两个页面问题,望大神帮忙!

问题描述 java用openoffice处理excel转pdf两个页面问题,望大神帮忙! 有大神用过openoffice处理过excel吗? 第一个问题就是sheet页,多个的话会每页每页的显示,能做的像excel一样的吗?多页并列的显示,可以切换. 第二个问题就是每个页,如果列比较多,也会换行显示,能实现它不换行显示吗? 解决方案 同问,还有如何更改默认A4纸显示?

麻烦大神帮忙看一下,找了半天也不知道哪里错了,非常感谢

问题描述 麻烦大神帮忙看一下,找了半天也不知道哪里错了,非常感谢 void sort(array,n) int array[]; int n; { int i,j,k,t; for(i=0;i<n-1;i++) {k=i; for(j=i+1;j<n;j++) if(array[j]<array[k]) k=j; t=array[k]; array[k]=array[k]; array[i]=t; }} main() { int a[10],i; printf("enter t

javascript-做了一个简单的表格,里面的JS函数调用不起来,麻烦大神帮忙看看~

问题描述 做了一个简单的表格,里面的JS函数调用不起来,麻烦大神帮忙看看~ 我是一名新手,如果有什么低级错误望前辈们指出~不胜感激. 解决方案 找到问题了,原来是我后面的按钮用的是而不是,所以onsubmit没调起来,图没截全非常抱歉,很感谢大家的热心帮助^_^ 解决方案二: 字体太小,看不清代码,建议你用调试器调试下. 解决方案三: 是你浏览器测试的还是什么?代码没看出有什么问题.唯一可能的就是你的js文件存储编码是ansi的,但是你的html指定的编码为utf-8,这样你的js包含中文会乱码