Один из способов сделать это - сохранить последнее действительное значение в атрибуте 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');
}
}
}
И измените текстовое поле на changeIfValid
для события onChange
:
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 все равно сможет их обработать.