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

标签 javascript ruby-on-rails validation textfield

我有一个文本字段

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

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

最佳答案

实现此目的的一种方法是将最后一个有效值存储在 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 仍然可以为您处理它们。

关于javascript - 在 Rails 助手中使用 Javascript 调用验证文本字段时,如何返回最后一个有效输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8951339/

相关文章:

javascript - 如何在 react 中添加滚动到顶部

javascript - 单击传单绘制控件(多边形、矩形等)时调用哪个函数: leaflet

Angular react 形式 : get validators from custom component

validation - 验证 Azure Functions CRUD 操作

javascript - 将文本从 div innerHtml 复制到 textarea

ruby-on-rails - 如何在 Rails 中编写和包含常规 ruby​​ 类

ruby-on-rails - HABTM 连接表需要两个索引吗?

ruby-on-rails - 如何调试/修复随机发生的 Redis::TimeoutError?

css - React-Bootstrap 的 Select 元素验证未对齐

javascript - 我如何使用原型(prototype)?