Javascript 实时验证:onchange 仅在第一次触发
Javascript Live Validation: onchange triggered only the first time
我有一个带有 select 框和输入字段的表单:当 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).. 错误消息仍然存在,我无法处理我的表单。
我哪里错了?
这个有用吗?我个人从未使用过 LiveValidation
库,但在查看 API 后,我想这会起作用。您需要将对验证器的引用存储在函数外部的某处(在更高范围内)并使用 add
和 remove
方法来控制 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" });
});
}
我有一个带有 select 框和输入字段的表单:当 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).. 错误消息仍然存在,我无法处理我的表单。 我哪里错了?
这个有用吗?我个人从未使用过 LiveValidation
库,但在查看 API 后,我想这会起作用。您需要将对验证器的引用存储在函数外部的某处(在更高范围内)并使用 add
和 remove
方法来控制 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" });
});
}