【问题标题】:Client side form validation rails客户端表单验证栏
【发布时间】:2019-01-16 04:59:53
【问题描述】:

问题:我的客户端rails表单输入格式验证无法正常工作。

我有以下 Rails 表单输入:

<%= form.text_field :twitter_link, 
    class: "form-control", 
    required: true, 
    pattern: "^(?:https?:\/\/)?(?:(?:www|m)\.)?twitter\.com\/\w+\/status\/\d+(?:\/\/?)?$", 
    title: "Twitter Comment URL" %>

当我输入正确的格式时,它不会验证并出现“输入正确的格式”消息。

我的模型中的以下正则表达式验证参数:

/\A^(?:https?:\/\/)?(?:(?:www|m)\.)?twitter\.com\/\w+\/status\/\d+(?:\/\/?)?\z/

如您所见,我在模型方面进行了一些更改,以验证是否可行。我尝试了其他一些方法,但都没有解决任何问题。

适用于我的模型端验证,但不适用于客户端。有什么我需要改变它才能工作吗?

我正在进行客户端验证,因此我可以为单个 text_field 提供自定义消息,而无需 Flash 或重定向。任何人,因为我有一个嵌套形式 3 深度,所以我遇到了让警报显示为 flash.now 的问题,而无需使用普通 flash 重新加载页面。不确定问题是什么,但这似乎是一个不错的选择。

如何解决此问题,以便正则表达式与输入 text_field 一起使用?

【问题讨论】:

  • 你在使用 jquery form-validation 吗?
  • 我相信这是 html 的内置功能。当我使用像“[0-9]”这样简单的东西时,它只适用于验证数字。除了常规的正则表达式之外,是否需要某种格式?

标签: ruby-on-rails ruby regex format


【解决方案1】:

使用单引号而不是双引号似乎可以解决问题。

<%= form.text_field :twitter_link, 
    class: "form-control", 
    required: true, 
    pattern: '^(?:https?:\/\/)?(?:(?:www|m)\.)?twitter\.com\/\w+\/status\/\d+(?:\/\/?)?$', 
    title: "Twitter Comment URL" %>

不知道为什么我以前没有尝试过这个,因为我过去曾遇到过类似的问题,双打和单打

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 1970-01-01
    • 2014-09-10
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多