最近在rails中验证用户名唯一性时,使用了原始的xmlHttpRequest时,没有成功,原因是服务器端无法response数据给客户端,肯定有解决办法,但是我目前还没有解决,于是费了点周折使用了rails自带的ajax方法:observe_field
实现效果:用户一边输入用户名,一边实现验证
实现过程:
rhtml:
<span id="result" ></span> <input name="loginname" type="text" id="ctl00_main_content_txtLogin" class="textbox" style="width:120px;" /> <%= observe_field(:ctl00_main_content_txtLogin, :frequency => 0.2, :update => :result, :with => 'loginname', :url => {:action => :tip }) %> |
说明:
:with 是传参,对应是name,而非id
controller:
def tip name = params[:loginname] if !ClientInfo.validate_login_name(name.to_s).nil? render :text=>'该用户已经存在' else render :text => '' end end |
说明:
ClientInfo.validate_login_name(name.to_s)是model中验证数据的方法
提示:
个人在做的时候,无法实现其效果,也不知道原因,折腾了好久才搞定,是通过firebug发现form is not defiend错误,然后google解决的,原因是js的:defaults没有加入,所以建议大家在调试js时使用firebug!
ref:
http://www.nabble.com/observe_field-gets-%22Form-is-not-defined%22-td4649511.html
http://apidock.com/rails/ActionView/Helpers/PrototypeHelper/observe_field
如果想更升入的了解observe_field,提供一个demo下载:
http://www.namipan.com/d/7c2280cf8afc1a57dbddf88d9b5962304cd2e91477580100
posted on 2009-04-28 18:02
fl1429 阅读(768)
评论(0) 编辑 收藏 所属分类:
Rails