随笔-167  评论-65  文章-0  trackbacks-0

最近在rails中验证用户名唯一性时,使用了原始的xmlHttpRequest时,没有成功,原因是服务器端无法response数据给客户端,肯定有解决办法,但是我目前还没有解决,于是费了点周折使用了rails自带的ajax方法:observe_field

实现效果:用户一边输入用户名,一边实现验证

image

实现过程:

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



write by feng
posted on 2009-04-28 18:02 fl1429 阅读(762) 评论(0)  编辑  收藏 所属分类: Rails

只有注册用户登录后才能发表评论。


网站导航:
 
已访问数:
free counters