【问题标题】:Javascript Live Validation: onchange triggered only the first timeJavascript 实时验证:onchange 仅在第一次触发
【发布时间】:2015-01-07 15:07:23
【问题描述】:

我有一个带有选择框和输入字段的表单:当 select 的选项值为“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).. 错误消息仍然存在,我无法处理我的表单。 我哪里错了?

【问题讨论】:

    标签: javascript livevalidation


    【解决方案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" });
      });
    }
    

    【讨论】:

    • 虽然一般来说,如果这可行,您可以进一步清理。您实际上并没有使用 form 参数,也不清楚 tipo1 的来源。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    • 1970-01-01
    • 2020-11-22
    • 1970-01-01
    • 2020-10-08
    • 1970-01-01
    • 2018-09-27
    相关资源
    最近更新 更多