首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LiveValidation .remove不工作

LiveValidation .remove不工作
EN

Stack Overflow用户
提问于 2010-09-20 22:52:10
回答 1查看 2.3K关注 0票数 9

我有一个Webform与LiveValidation扩展一起工作。我有一个有条件的规则,如果用户选择美国,那么州或省字段必须在州缩写列表中。

我的问题是,如果用户选择美国,然后返回并更改他们的答案,验证规则应该被删除,这样他们就可以输入任何旧的文本字符串。我已经四次检查了我的语法,函数返回的是一个liveValidation对象,而不是一个错误对象,但是这个规则并没有被删除。如有任何建议,将不胜感激。

下面是剧本:

代码语言:javascript
复制
            if($('#edit-submitted-state-or-province').length){    
            var field12 = new LiveValidation('edit-submitted-state-or-province', { validMessage: " ", onlyOnBlur: true });
            field12.add( Validate.Presence,  { failureMessage: "Please enter your state or province." }  );
            }
            $('#edit-submitted-country').change(function() {
                var stateList = new Array("","AK"..."WY");
                if($("#edit-submitted-country").val() == "United States"){
                    field12.add( Validate.Inclusion, {within: stateList, failureMessage: "Please enter a valid 2-letter state abbreviation."});
                }
                else{
                    field12.remove( Validate.Inclusion, {within: stateList, failureMessage: "Please enter a valid 2-letter state abbreviation."});
                }
            });
EN

回答 1

Stack Overflow用户

发布于 2011-06-08 23:44:03

要回答这个问题可能太晚了,但现在.

LiveValidation.remove的文档声明“您必须通过与添加验证完全相同的参数”。尽管验证函数(Validate.Inclusion)是相同的,但参数对象每次都会有所不同。不管它是否“看起来”相同(也就是说,应该比较添加的对象和删除的对象之间每个属性的值的结果),这意味着它必须是相同的对象()。确保这一点的唯一方法是将参数对象的声明移到您要操作验证对象的回调之外,以便只创建它一次,而不是每次调用回调时都创建它。

这是代码(我重命名了您的ids,BTW)。我还确保验证检查只能添加一次。

代码语言:javascript
复制
$(function() {

var field12,
    added = false,
    stateList = ["", "AK", "CO", "WY"]; // etc
    params = {
        within: stateList,
        failureMessage: "Please enter a valid 2-letter state abbreviation."
    };    

if ($('#state').length) {    
  field12 = new LiveValidation('state', {
      validMessage: " ",
      onlyOnBlur: true
  });

  field12.add(Validate.Presence, {
      failureMessage: "Please enter your state or province."
  });

}

$('#country').change(function() {
  if ($("#country").val() == "United States") {
      if (!added) {
          field12.add(Validate.Inclusion, params);
          added = true;
      }
  }
  else {
      if (added) {
          field12.remove(Validate.Inclusion, params);
          added = false;
      }
  }
});

});
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3756102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档