Rails-jQuery 为什么我必须单击两次才能显示 jQuery 效果
Rails-jQuery Why do I have to click twice for jQuery effect to show?
我正在使用 Rails 4.1.1 为什么我必须单击两次才能显示 jQuery 效果?我一直在谷歌搜索,但我找不到任何解决方案,不确定我的jQuery代码是否有问题,或者......
当我第一次单击"提交"时,效果没有出现,但已经调用了POST操作,当我第二次单击时,效果出现了并调用了POST操作。
请在下面查看我的create.js.erb
、users_controller.rb
、new.html.erb
创建.js.erb
function isValidEmailAddress(emailAddress) {
var pattern = new RegExp(/^((([a-z]|'d|[!#'$%&''*'+'-'/='?'^_`{'|}~]|['u00A0-'uD7FF'uF900-'uFDCF'uFDF0-'uFFEF])+('.([a-z]|'d|[!#'$%&''*'+'-'/='?'^_`{'|}~]|['u00A0-'uD7FF'uF900-'uFDCF'uFDF0-'uFFEF])+)*)|(('x22)(((('x20|'x09)*('x0d'x0a))?('x20|'x09)+)?((['x01-'x08'x0b'x0c'x0e-'x1f'x7f]|'x21|['x23-'x5b]|['x5d-'x7e]|['u00A0-'uD7FF'uF900-'uFDCF'uFDF0-'uFFEF])|(''(['x01-'x09'x0b'x0c'x0d-'x7f]|['u00A0-'uD7FF'uF900-'uFDCF'uFDF0-'uFFEF]))))*((('x20|'x09)*('x0d'x0a))?('x20|'x09)+)?('x22)))@((([a-z]|'d|['u00A0-'uD7FF'uF900-'uFDCF'uFDF0-'uFFEF])|(([a-z]|'d|['u00A0-'uD7FF'uF900-'uFDCF'uFDF0-'uFFEF])([a-z]|'d|-|'.|_|~|['u00A0-'uD7FF'uF900-'uFDCF'uFDF0-'uFFEF])*([a-z]|'d|['u00A0-'uD7FF'uF900-'uFDCF'uFDF0-'uFFEF])))'.)+(([a-z]|['u00A0-'uD7FF'uF900-'uFDCF'uFDF0-'uFFEF])|(([a-z]|['u00A0-'uD7FF'uF900-'uFDCF'uFDF0-'uFFEF])([a-z]|'d|-|'.|_|~|['u00A0-'uD7FF'uF900-'uFDCF'uFDF0-'uFFEF])*([a-z]|['u00A0-'uD7FF'uF900-'uFDCF'uFDF0-'uFFEF])))'.?$/i);
return pattern.test(emailAddress);
};
$("form").submit(function( event ) {
var email = $("input#user_email").val();
if (email == "") {
$("h1").text( "Email cannot be empty" ).show().fadeOut( 3000 );
return;
} else if (!isValidEmailAddress(email)) {
$("h1").text( "Email address is not valid" ).show().fadeOut( 3000 );
}else {
$("h1").text( "Correct email address" ).show();
}
event.preventDefault();
});
新.html.erb
<%= form_for @user, remote: true do |f| %>
<p>
<%= f.text_field :email %>
</p>
<p>
<%= f.submit :Submit %>
</p>
<% end %>
<h1></h1>
<% @users.each do |user| %>
<tr>
<li><%= user.email %></li>
</tr>
<% end %>
users_controller.rb
class UsersController < ApplicationController
def new
@users = User.all
@user = User.new
end
def create
@user = User.new(user_params)
respond_to do |format|
format.html { redirect_to '/' }
format.js
end
@user.save
end
private
def user_params
params.require(:user).permit(:email)
end
end
涡轮链接可能会导致此问题 - 尝试在您的应用程序中禁用涡轮链接,这对我有用 过去当我遇到过类似的问题时
你弄错了。当您在 Rails 中提交远程表单时,应用程序会向create
操作发送 AJAX 请求,然后从您的create.js.erb
中获取收到的 js 代码。因此,第一次单击按钮时,没有任何反应。
js 视图不是处理验证的地方,您应该将其放在assets/javascripts
中的某个位置。js 视图是使用表单更新页面的 html 视图的地方(例如,将记录添加到列表、显示收到的错误、重置表单)。
相关文章:
- Append元素在运行两次函数后不显示
- JavaScript倒计时计时器不会显示两次
- 使用wow.js显示两次动画对象
- Rails-jQuery 为什么我必须单击两次才能显示 jQuery 效果
- isHidden函数要求我在应用响应显示时单击两次
- 为什么是Backbone.Collection为第一个查看器显示了两次
- “index.swf”嵌入在“index.html”中,在一个页面中显示同一网站两次.HTML 标题标签/属性也显示值“
- 显示当前日期两次
- 下拉所选值在下拉选项中显示两次
- Ionic:单击两次时显示活动/非活动按钮
- 下拉列表中的选定值在下拉列表中显示两次
- DNN:dnn确认需要两次点击才能显示
- 枚举内容滑块一次显示两个图像
- 谷歌地图在模态没有显示后两次开放-离子
- 警报显示两次而不是一次
- Chrome(也许是Safari?)激发了“;模糊”;当浏览器失去焦点时,在输入字段上显示两次
- datePicker需要单击两次才能显示不可用的日期
- yii在提交按钮中显示确认消息两次
- 为什么我不能两次显示新的Ext.Window ?
- 触发onerror两次显示备用图像的备用图像