异步验证注册字段合法
This commit is contained in:
parent
4d8701220b
commit
19ddb38e1b
|
@ -172,6 +172,33 @@ class AccountController < ApplicationController
|
|||
redirect_to signin_path
|
||||
end
|
||||
|
||||
def valid_ajax
|
||||
req = Hash.new(false)
|
||||
req[:message] = ''
|
||||
|
||||
valid_attr = params[:valid]
|
||||
valid_value = params[:value]
|
||||
|
||||
faker = User.new
|
||||
|
||||
if valid_attr.eql?('login')
|
||||
faker.login = valid_value
|
||||
faker.valid?
|
||||
req[:valid] = faker.errors[:login].blank?
|
||||
req[:message] = faker.errors[:login]
|
||||
end
|
||||
|
||||
if valid_attr.eql?('mail')
|
||||
faker.mail = valid_value
|
||||
faker.valid?
|
||||
req[:valid] = faker.errors[:mail].blank?
|
||||
req[:message] = faker.errors[:mail]
|
||||
end
|
||||
|
||||
req[:message] = l(:modal_valid_passing) if req[:message].blank?
|
||||
render :json => req
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def authenticate_user
|
||||
|
|
|
@ -278,8 +278,8 @@
|
|||
|
||||
|
||||
<% if @user.auth_source_id.nil? %>
|
||||
<p><%= f.text_field :login, :size => 25, :required => true %>
|
||||
<em class="info"><%= l(:label_max_number) %></em></p>
|
||||
<p><%= f.text_field :login, :size => 25, :required => true %><span id="valid_user_login"></span>
|
||||
<em class="info"><%= l(:label_max_number) %></em></p>
|
||||
<p><%= f.password_field :password, :size => 25, :required => true %>
|
||||
<em class="info"><%= l(:text_caracters_minimum, :count => Setting.password_min_length) %></em></p>
|
||||
|
||||
|
@ -294,7 +294,7 @@
|
|||
<td class="info" style="width: 10px">
|
||||
<%= text_field_tag :enterprise_name %></td></tr></table></p>
|
||||
</span>
|
||||
<p><%= f.text_field :mail, :required => true %></p>
|
||||
<p><%= f.text_field :mail, :required => true %><span id="valid_user_mail"></span></p>
|
||||
<p>
|
||||
<em class="info"><%="#{l(:label_mail_attention)} "%></em></p>
|
||||
<p><%= f.select :language, lang_options_for_select , :required => true %></p>
|
||||
|
@ -368,3 +368,36 @@
|
|||
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
var $login = $('#user_login')
|
||||
var $mail = $('#user_mail')
|
||||
|
||||
jQuery(document).ready(function() {
|
||||
$login.blur(function(event) {
|
||||
var $parent = $(this).parent();
|
||||
if ( $(this).is('#user_login')) {
|
||||
$.get('<%=account_valid_ajax_path%>?valid=login&value='+this.value, function(data) {
|
||||
if (data.valid) {
|
||||
$('#valid_user_login').html('<span class="green">'+data.message+"</span>");
|
||||
}else{
|
||||
$('#valid_user_login').html('<span class="red">'+data.message+"</span>");
|
||||
}
|
||||
});
|
||||
};
|
||||
});
|
||||
|
||||
$mail.blur(function(event) {
|
||||
var $parent = $(this).parent();
|
||||
if ( $(this).is('#user_mail')) {
|
||||
$.get('<%=account_valid_ajax_path%>?valid=mail&value='+this.value, function(data) {
|
||||
if (data.valid) {
|
||||
$('#valid_user_mail').html('<span class="green">'+data.message+"</span>");
|
||||
}else{
|
||||
$('#valid_user_mail').html('<span class="red">'+data.message+"</span>");
|
||||
}
|
||||
});
|
||||
};
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
|
@ -1603,3 +1603,5 @@ en:
|
|||
label_activity_time: publish date
|
||||
|
||||
|
||||
# ajax异步验证
|
||||
modal_valid_passing: can be used.
|
|
@ -1885,4 +1885,7 @@ zh:
|
|||
label_relation_files: 关联已有资源
|
||||
label_contest_settings: 配置竞赛
|
||||
label_contest_delete: 删除竞赛
|
||||
|
||||
# ajax异步验证
|
||||
modal_valid_passing: 可以使用
|
||||
|
181
config/routes.rb
181
config/routes.rb
|
@ -16,73 +16,73 @@
|
|||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
RedmineApp::Application.routes.draw do
|
||||
resources :no_uses
|
||||
delete 'no_uses', :to => 'no_uses#delete'
|
||||
|
||||
resources :apply_project_masters
|
||||
delete 'apply_project_masters', :to => 'apply_project_masters#delete'
|
||||
|
||||
|
||||
resources :open_source_projects do
|
||||
collection do
|
||||
match 'search', via: [:get, :post]
|
||||
match 'remove_condition', via: [:get, :post]
|
||||
end
|
||||
resources :relative_memos
|
||||
member do
|
||||
match 'master_apply', via: [:get, :post]
|
||||
match 'accept_master_apply', via: [:get, :post]
|
||||
match 'refuse_master_apply', via: [:get, :post]
|
||||
end
|
||||
end
|
||||
mount SeemsRateable::Engine => '/rateable', :as => :rateable
|
||||
|
||||
namespace :zipdown do
|
||||
match 'assort'
|
||||
end
|
||||
namespace :test do
|
||||
match 'courselist'
|
||||
match 'zip'
|
||||
end
|
||||
##new added by linchun #以发布应用的形式参与竞赛
|
||||
resources :softapplications do
|
||||
|
||||
collection do
|
||||
match 'new_message', via: :get
|
||||
end
|
||||
member do
|
||||
match 'create_message' , via: :post
|
||||
end
|
||||
end
|
||||
|
||||
## new added by linchun #新竞赛相关
|
||||
resources :contests, only: [:index] do
|
||||
collection do
|
||||
match 'new_contest' , via: :get
|
||||
match 'join_in_contest' , via: :post
|
||||
match 'unjoin_in_contest' , via: :delete
|
||||
match 'create_contest' , via: :post
|
||||
match 'new_join' , via: :post
|
||||
match 'new' , via: :post
|
||||
end
|
||||
member do
|
||||
match 'add_softapplication'
|
||||
match 'update_contest' , via: [:put]
|
||||
match 'show_contest' , via: :get
|
||||
match 'show_project' , via: :get
|
||||
match 'show_softapplication', via: :get
|
||||
match 'show_participator' , via: :get
|
||||
match 'add' , via: [:get, :post]
|
||||
match 'add_softapplication' , via: [:get, :post]
|
||||
match 'create' , via: :post
|
||||
match 'settings' , via: [:get, :post]
|
||||
end
|
||||
end
|
||||
|
||||
resources :no_uses
|
||||
delete 'no_uses', :to => 'no_uses#delete'
|
||||
|
||||
resources :apply_project_masters
|
||||
delete 'apply_project_masters', :to => 'apply_project_masters#delete'
|
||||
|
||||
|
||||
resources :open_source_projects do
|
||||
collection do
|
||||
match 'search', via: [:get, :post]
|
||||
match 'remove_condition', via: [:get, :post]
|
||||
end
|
||||
resources :relative_memos
|
||||
member do
|
||||
match 'master_apply', via: [:get, :post]
|
||||
match 'accept_master_apply', via: [:get, :post]
|
||||
match 'refuse_master_apply', via: [:get, :post]
|
||||
end
|
||||
end
|
||||
mount SeemsRateable::Engine => '/rateable', :as => :rateable
|
||||
|
||||
namespace :zipdown do
|
||||
match 'assort'
|
||||
end
|
||||
namespace :test do
|
||||
match 'courselist'
|
||||
match 'zip'
|
||||
end
|
||||
##new added by linchun #以发布应用的形式参与竞赛
|
||||
resources :softapplications do
|
||||
|
||||
collection do
|
||||
match 'new_message', via: :get
|
||||
end
|
||||
member do
|
||||
match 'create_message' , via: :post
|
||||
end
|
||||
end
|
||||
|
||||
## new added by linchun #新竞赛相关
|
||||
resources :contests, only: [:index] do
|
||||
collection do
|
||||
match 'new_contest' , via: :get
|
||||
match 'join_in_contest' , via: :post
|
||||
match 'unjoin_in_contest' , via: :delete
|
||||
match 'create_contest' , via: :post
|
||||
match 'new_join' , via: :post
|
||||
match 'new' , via: :post
|
||||
end
|
||||
member do
|
||||
match 'add_softapplication'
|
||||
match 'update_contest' , via: [:put]
|
||||
match 'show_contest' , via: :get
|
||||
match 'show_project' , via: :get
|
||||
match 'show_softapplication', via: :get
|
||||
match 'show_participator' , via: :get
|
||||
match 'add' , via: [:get, :post]
|
||||
match 'add_softapplication' , via: [:get, :post]
|
||||
match 'create' , via: :post
|
||||
match 'settings' , via: [:get, :post]
|
||||
end
|
||||
end
|
||||
|
||||
resources :stores do
|
||||
collection do
|
||||
match 'search', via: [:get, :post]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
resources :forums do
|
||||
|
@ -100,20 +100,20 @@ RedmineApp::Application.routes.draw do
|
|||
end
|
||||
end
|
||||
|
||||
resources :shares
|
||||
resources :shares
|
||||
|
||||
#added by william
|
||||
get "tags/index"
|
||||
|
||||
|
||||
get "tags/show"
|
||||
|
||||
|
||||
get "praise_tread/praise_plus"
|
||||
|
||||
get "praise_tread/tread_plus"
|
||||
#end
|
||||
|
||||
root :to => 'welcome#index', :as => 'home'
|
||||
|
||||
|
||||
#added by baiyu
|
||||
match 'git_usage/ch_usage', :controller => 'git_usage', :action => 'ch_usage', :via => :get, :as => 'ch_usage'
|
||||
match 'git_usage/en_usage', :controller => 'git_usage', :action => 'en_usage', :via => :get, :as => 'en_usage'
|
||||
|
@ -126,6 +126,7 @@ RedmineApp::Application.routes.draw do
|
|||
match 'account/register', :to => 'account#register', :via => [:get, :post], :as => 'register'
|
||||
match 'account/lost_password', :to => 'account#lost_password', :via => [:get, :post], :as => 'lost_password'
|
||||
match 'account/activate', :to => 'account#activate', :via => :get
|
||||
match 'account/valid_ajax', :to => 'account#valid_ajax', :via => :get
|
||||
|
||||
match '/news/preview', :controller => 'previews', :action => 'news', :as => 'preview_news', :via => [:get, :post, :put]
|
||||
match '/issues/preview/new/:project_id', :to => 'previews#issue', :as => 'preview_new_issue', :via => [:get, :post, :put]
|
||||
|
@ -167,21 +168,21 @@ RedmineApp::Application.routes.draw do
|
|||
get 'projects/:id/issues/report', :to => 'reports#issue_report', :as => 'project_issues_report'
|
||||
get 'projects/:id/issues/report/:detail', :to => 'reports#issue_report_details', :as => 'project_issues_report_details'
|
||||
post '/users/:id/user_activities', :to => 'users#show', :as => "user_activities"
|
||||
|
||||
|
||||
#added by young
|
||||
resources :users do
|
||||
resources :users do
|
||||
member do
|
||||
match 'user_projects', :to => 'users#user_projects', :via => :get
|
||||
match 'user_activities', :to => 'users#show', :via => :get, :as => "user_activities"
|
||||
match 'user_newfeedback', :to => 'users#user_newfeedback', :via => :get, :as => "user_newfeedback"
|
||||
match 'watch_calls', :controller => 'users', :action => 'watch_bids', :via => [:get , :post]
|
||||
match 'user_newfeedback', :to => 'users#user_newfeedback', :via => :get, :as => "user_newfeedback"
|
||||
match 'watch_calls', :controller => 'users', :action => 'watch_bids', :via => [:get , :post]
|
||||
match 'info', :to => 'users#info', :via => [:get , :post], :as => 'user_info'
|
||||
match 'user_watchlist', :to => 'users#user_watchlist', :via => :get, :as => "user_watchlist" #add by huang
|
||||
match 'user_fanslist', :to => 'users#user_fanslist', :via => :get, :as => "user_fanslist" #add by huang
|
||||
match 'user_courses', :to => 'users#user_courses', :via => :get
|
||||
match 'user_homeworks', :to => 'users#user_homeworks', :via => :get
|
||||
match 'watch_projects', :to => 'users#watch_projects', :via => :get
|
||||
# added by bai
|
||||
match 'watch_projects', :to => 'users#watch_projects', :via => :get
|
||||
# added by bai
|
||||
match 'show_score', :to => 'users#show_score', :via => :get
|
||||
match 'topic_score_index', :controller => 'users', :action => 'topic_score_index', :via => [:get, :post]
|
||||
match 'project_score_index', :to => 'users#project_score_index', :via => :get
|
||||
|
@ -195,13 +196,13 @@ RedmineApp::Application.routes.draw do
|
|||
match 'file_score_index', :to => 'projects#file_score_index', :via => [:get, :post]
|
||||
match 'code_submit_score_index', :to => 'projects#code_submit_score_index', :via => [:get, :post]
|
||||
match 'projects_topic_score_index', :to => 'projects#projects_topic_score_index', :via => [:get, :post]
|
||||
# end
|
||||
# end
|
||||
end
|
||||
end
|
||||
match 'users/:id/user_newfeedback', :to => 'users#user_newfeedback', :via => :get, :as => "feedback"
|
||||
match 'users/:id/user_projects', :controller => 'users', :action => 'user_projects', :via => :get
|
||||
#match 'user/:id/watch_calls', :controller => 'users', :action => 'watch_bids', :via => [:get , :post]
|
||||
|
||||
#match 'user/:id/watch_calls', :controller => 'users', :action => 'watch_bids', :via => [:get , :post]
|
||||
|
||||
#end
|
||||
match 'my/account', :controller => 'my', :action => 'account', :via => [:get, :post]
|
||||
match 'my/account/destroy', :controller => 'my', :action => 'destroy', :via => [:get, :post]
|
||||
|
@ -276,7 +277,7 @@ RedmineApp::Application.routes.draw do
|
|||
# get 'projects/:project_id/repository', :to => 'repositories#show', :as => 'project_repository'
|
||||
|
||||
# match '/show', :controller => 'projects', :action => 'show', :as => 'project_show', :via => :get
|
||||
match '/watcherlist', :controller=>'projects', :action=> 'watcherlist', :as => 'watcherlist', :via => :get #add by huang
|
||||
match '/watcherlist', :controller=>'projects', :action=> 'watcherlist', :as => 'watcherlist', :via => :get #add by huang
|
||||
# matche '/news', :controller => 'news', :action => 'index', :as => 'news', :via => :get
|
||||
#end
|
||||
|
||||
|
@ -326,7 +327,7 @@ RedmineApp::Application.routes.draw do
|
|||
resources :repositories, :except => [:index, :show] do
|
||||
member do
|
||||
get 'newrepo', :via => [:get, :post]
|
||||
# get 'create', :via=>[:get, :post]
|
||||
# get 'create', :via=>[:get, :post]
|
||||
end
|
||||
end
|
||||
match 'wiki/index', :controller => 'wiki', :action => 'index', :via => :get
|
||||
|
@ -518,10 +519,10 @@ RedmineApp::Application.routes.draw do
|
|||
|
||||
match 'uploads', :to => 'attachments#upload', :via => :post
|
||||
# Added by Tao
|
||||
match 'upload_avatar', :to => 'avatar#upload', :via => :post
|
||||
match 'upload_avatar', :to => 'avatar#upload', :via => :post
|
||||
# Endof Tao's code
|
||||
get 'robots.txt', :to => 'welcome#robots'
|
||||
|
||||
|
||||
##############测试留言功能 fq
|
||||
post 'words/new', :to => 'words#new'
|
||||
post 'words/create', :to => 'words#create'
|
||||
|
@ -545,7 +546,7 @@ RedmineApp::Application.routes.draw do
|
|||
match 'calls/:id/new_submit_homework', to: 'bids#new_submit_homework', via: :get, as: 'new_submit_homework'
|
||||
match 'words/add_project_respond', :controller => 'words', :action => 'add_project_respond'
|
||||
match 'words/:id/leave_project_message', :controller => 'words', :action => 'leave_project_message'
|
||||
|
||||
|
||||
match 'projects/:id/feedback', :to => 'projects#feedback', :via => :get, :as => 'project_feedback'
|
||||
match 'calls/create_bid', :to => 'bids#create_bid'
|
||||
match 'contest/create_contest', :to => 'bids#create_contest' #huang
|
||||
|
@ -559,24 +560,24 @@ RedmineApp::Application.routes.draw do
|
|||
match 'calls/:id/show_course', :to => 'bids#show_course', :as => 'show_course'
|
||||
match 'calls/:id/show_bid_project', :to => 'bids#show_bid_project', :as => 'show_bid_project'
|
||||
match 'calls/:id/show_bid_user', :to => 'bids#show_bid_user', :as => 'show_bid_user'
|
||||
|
||||
|
||||
match 'project/:id/share', :to => 'projects#share', :as => 'share_show' #share
|
||||
|
||||
post 'join_in/join', :to => 'courses#join', :as => 'join'
|
||||
|
||||
post 'join_in/join', :to => 'courses#join', :as => 'join'
|
||||
delete 'join_in/join', :to => 'courses#unjoin'
|
||||
post 'calls/:id/join_in_contest', :to => 'bids#join_in_contest', :as => 'join_in_contest'
|
||||
delete 'calls/:id/join_in_contest', :to => 'bids#unjoin_in_contest'
|
||||
match 'calls/:id/show_participator', :to => 'bids#show_participator' #bai
|
||||
match 'calls/:id/update_contest', :to => 'bids#update_contest' #bai
|
||||
match 'calls/:id/settings', :to => 'bids#settings' #bai
|
||||
|
||||
|
||||
delete 'attachment/:id', :to => 'attachments#delete_homework'
|
||||
match 'new_join', :to => 'projects#new_join', :as => 'try_join'
|
||||
match 'new_join_in_contest', :to => 'bids#new_join', :as => 'try_join_in_contest'
|
||||
match 'projects/:id/respond', :to => 'projects#project_respond', :via => :post
|
||||
match 'calls/:id/manage',:to => 'bids#manage',:via => [:get,:post]
|
||||
match 'project/course', :to => 'projects#course', :as => 'course'
|
||||
|
||||
|
||||
#added by william
|
||||
# match 'calls/:id/set_results',:controller => 'bids', :action => 'set_results',:via => [:get,:post],:as => 'set_results'
|
||||
# match 'calls/:id/set_prizes',:controller => 'bids',:action => 'set_prizes',:as => 'set_prizes'
|
||||
|
@ -584,10 +585,10 @@ RedmineApp::Application.routes.draw do
|
|||
|
||||
# added by young
|
||||
match 'calls', :controller => 'bids', :action => 'index'
|
||||
|
||||
|
||||
match 'calls/:id', :controller => 'bids', :action => 'show', :as => 'respond'
|
||||
match 'contest', :controller => 'bids', :action => 'contests', :as => 'contest' #modified @20140403
|
||||
|
||||
|
||||
|
||||
########################
|
||||
##added by wen##########
|
||||
|
@ -616,7 +617,7 @@ RedmineApp::Application.routes.draw do
|
|||
match 'parise_tread/tread_plus',:to => 'parise_tread#tread_plus',:as=>"tread"
|
||||
match 'tags/delete',:to=>'tags#delete'
|
||||
match 'tags/remove_tag',:to=>'tags#remove_tag',:as=>"remove_tag"
|
||||
|
||||
|
||||
match 'words/add_brief_introdution', :controller => 'words', :action => 'add_brief_introdution'
|
||||
|
||||
Dir.glob File.expand_path("plugins/*", Rails.root) do |plugin_dir|
|
||||
|
|
|
@ -1,5 +1,14 @@
|
|||
/* TODO: base/common/page 准备封装一些基本样式组合调用 参考YUI
|
||||
*******************************************************************************/
|
||||
span[id^=valid_user]{
|
||||
padding-left: 10px;
|
||||
}
|
||||
.red{
|
||||
color: red;
|
||||
}
|
||||
.green{
|
||||
color: green;
|
||||
}
|
||||
.border_box {
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
|
|
Loading…
Reference in New Issue