Javascript Live Validation:onchange 仅在第一次触发

Javascript Live Validation: onchange triggered only the first time

本文关键字:第一次 onchange Live Validation Javascript      更新时间:2023-09-26

我有一个带有选择框和输入字段的表单:当选择的选项值为"8"时,我会让输入字段必须小于 250

选择框

<select id="select_5" size="1" title="Effettua una scelta!"  name="tipo_nolavorazioni" onChange="updatethis(this.form);">
<option value="8"> A </option>
<option value="1"> B</option>
<option value="2"> C</option>
<option value="3"> D </option>
</select>

输入框

<input class="required validate-number" maxlength="150" size="5" id="text_2" name="base" type="text" onChange="updatethis(this.form);" value="" />
<p id="errore_base"></p>

在JS文件上,我添加了以下内容:

function updatethis(form) {
if (tipo1==8) {
window.addEvent('domready', function(){
  var valid = new LiveValidation('text_2', {insertAfterWhatNode : "errore_base"});
  valid.add(Validate.Numericality, { maximum: 250, tooHighMessage: "Max 250cm" });
  });
}
}

这有效,但是如果我更改选项值(例如B = 1)..错误消息仍然存在,并且我无法处理我的表单。我错在哪里?

这行得通吗?我从未亲自使用过LiveValidation库,但在查看 API 后,我想这会起作用。您需要将对验证程序的引用存储在函数外部的某个位置(在更高的范围内),并使用 addremove 方法来控制 UI。

有关详细信息,请参阅:http://livevalidation.com/documentation#LiveValidationRemove

var validator = new LiveValidation('text_2', {insertAfterWhatNode : "errore_base"})
function updatethis(form) {
  var action = 'remove';
  if (tipo1 == 8) {
    action = 'add';
  }
  window.addEvent('domready', function(){
    validator.add(Validate.Numericality, { maximum: 250, tooHighMessage: "Max 250cm" });
  });
}