在 Rails 助手中使用 Javascript 调用验证文本字段时,如何返回最后一个有效输入?

发布于 2024-12-28 08:07:37 字数 216 浏览 0 评论 0原文

我有一个文本字段,

text_field_tag('version',version, :cols => 20 , :onchange => "validateVer(this);")

在 validateVer java 脚本函数中,我正在检查是否输入了有效的浮点数,如果没有,我将默认返回 1.0。如何返回文本字段(版本)中的先前值。

I have a text field

text_field_tag('version',version, :cols => 20 , :onchange => "validateVer(this);")

In validateVer java script function I am checking whether a valid float is entered, if not I am returning by default 1.0. How can I return the previous value in text field(version).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

等你爱我 2025-01-04 08:07:37

实现此目的的一种方法是将最后一个有效值存储在 data- 属性中:

// modify your validateVer function to return false if validation fails and true otherwise
function validateVer(elem) {
}

function changeIfValid(elem) {
  if (validateVer(elem)) {
    $(elem).data('last-valid-version', $(elem).val());
  } else {
    var lastValidVersion = $(elem).data('last-valid-version');
    if (lastValidVersion != null) {
      $(elem).val(lastValidVersion);
    } else {
      $(elem).val('1.0');
    }
  }
}

并更改文本字段以针对 onChange 调用 changeIfValid事件:

text_field_tag('version', 
               version, 
               :cols => 20, 
               :onchange => "changeIfValid(this);")

编辑:为了初始化data-last-valid-version或设置text_field_tag的任何其他属性,您可以将其作为哈希值传递给text_field_tag 方法:

text_field_tag('version', 
               version, 
               :cols => 20, 
               "data-last-valid-version" => "A_DEFAULT_VAL",
               :onchange => "changeIfValid(this);")

顺便说一句,data-* 属性是 HTML 5 的功能,而不是 Rails 的功能。即使您使用 HTML 4 或 XHTML,jQuery 仍然可以为您处理它们。

One way to do this is to store the last valid value in a data- attribute:

// modify your validateVer function to return false if validation fails and true otherwise
function validateVer(elem) {
}

function changeIfValid(elem) {
  if (validateVer(elem)) {
    $(elem).data('last-valid-version', $(elem).val());
  } else {
    var lastValidVersion = $(elem).data('last-valid-version');
    if (lastValidVersion != null) {
      $(elem).val(lastValidVersion);
    } else {
      $(elem).val('1.0');
    }
  }
}

And change your text field to call changeIfValid for the onChange event:

text_field_tag('version', 
               version, 
               :cols => 20, 
               :onchange => "changeIfValid(this);")

EDIT: In order to initialize data-last-valid-version or set any of the other attributes for the text_field_tag, you can just pass it as a hash value to the text_field_tag method:

text_field_tag('version', 
               version, 
               :cols => 20, 
               "data-last-valid-version" => "A_DEFAULT_VAL",
               :onchange => "changeIfValid(this);")

By the way, data-* attributes are a feature of HTML 5 not Rails. Even if you are using HTML 4 or XHTML, jQuery can still handle them for you.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文