我有一个文本字段
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/