javascript - rails : flash[:alert] in if-else misbehaving in JQuery

标签 javascript jquery ruby-on-rails ruby

在 Rails 中,如果使用 JavaScript 输入的日期无效,我想通过 flash[:alert] 显示错误消息。
但这里即使给定的日期是正确的,它也会显示错误,因为页面第一次加载时它会显示消息无效日期

最初当页面加载时,我的输入文本字段“target_month_str”值为“2014/07”

我的程序代码是:

$( "#target_month_str" ).change(function()                        
{                                
  var dt= $(this).val();
  var dtRegex = /^(0|[1-9]\d{3})(\/)(0?[1-9]|1[012])$/;
  var dtArray = dt.match(dtRegex);
  if (dtArray === null){
    "<%= flash[:alert] = 'Invalid date' %>"
  }
 });

我不明白页面加载时为什么会显示“无效日期”消息。

最佳答案

简而言之:因为您在 JavaScript 有机会在客户端上执行之前就设置了 flash

解决方案:继续使用 JavaScript/jQuery 显示“无效日期”消息,例如,

if (dtArray === null) {
    $("div.msgs").text("Invalid date");
}

更好的是,使用任何现有的 jQuery 插件来为您完成此操作。

关于javascript - rails : flash[:alert] in if-else misbehaving in JQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24840055/

相关文章:

javascript - 如果 .focusout 表单上没有值,是否恢复为原始值?

ruby-on-rails - rspec-given 错误 `Then` 在示例中不可用(例如 `it` block )

javascript - ajax 切换表单 js (rails)

ruby-on-rails - 下载大文件(~40MB)并使用回形针另存为附件

javascript - 为什么我的 Angularjs $location.path(url) 循环回到根目录?

javascript - 如何使用 Browserify 和 iOS JavaScriptCore

java - jQuery 模板和 Backbone.js

javascript - jquery.mockjax 与需要 shim 的 Webpack 一起使用

javascript - 如何通过在点击时添加边框来在无序列表 "highlight"中制作按钮?

javascript - 根据输入值更改 AJAX 参数