【问题标题】:comparing variables for validate addMethod比较变量以验证 addMethod
【发布时间】:2011-03-12 12:50:39
【问题描述】:

我整天都在为此苦苦挣扎,已经接近了几次,但似乎没有任何效果。

我有一个文本输入 <input type="text" name="USA_sub" id="USA_sub" />,然后输入 <input type="text" name="FirstName" id="FirstName" /> 我需要确保(创建一个验证规则)声明 "#FirstName" 的值必须包含在 "#USA_sub" 的值中.

我不断收到错误“$(sig).contains is not a function”:

$.validator.addMethod("FNESig", function (value, element) {
    var firstname = $("#FirstName").val();
    var sig = $("#USA_sub").val();

    if ($(sig).contains(firstname)) {
        return true;
    } else return false;
}, "Your First Name must be in your Electronic Signature.");

谢谢 凯恩

【问题讨论】:

    标签: javascript jquery string validation contains


    【解决方案1】:

    试试这个:

    if (sig.indexOf(firstname) >= 0) {
        return true;
    } else return false;
    

    【讨论】:

    • 为什么这被否决了?没错,他有>= 0,而不仅仅是> 0。 +1
    【解决方案2】:

    jQuery 中的contains 方法只能应用于 DOM 元素。您可能想改用indexOf javascript 方法。它将在字符串中搜索指定值的出现

    $.validator.addMethod("FNESig", function (value, element) {
        var firstname = $("#FirstName").val();
        var sig = $("#USA_sub").val();
    
        // means: does sig contains firstname?
        return (sig.indexOf(firstname) !== -1);
    
    }, "Your First Name must be in your Electronic Signature.");
    

    【讨论】:

      【解决方案3】:

      取而代之的是($().contains() 不是一个方法……你有一个字符串,不是一个 jQuery 对象的选择器,不需要包装任何东西):

      if ($(sig).contains(firstname)) {
          return true;
          } else return false;
      

      你可以直接使用string.indexOf(),像这样:

      return sig.indexOf(firstname) != -1; //-1 would mean it wasn't found
      

      附带说明,由于您返回的结果与条件相同,因此只需返回它,换句话说:

      if(someCondition) {
        return true;
      } else {
        return false;
      }
      

      只能是:

      return someCondition;
      

      【讨论】:

        猜你喜欢
        • 2011-03-31
        • 1970-01-01
        • 2012-03-11
        • 1970-01-01
        • 1970-01-01
        • 2020-05-15
        • 1970-01-01
        • 2017-09-20
        相关资源
        最近更新 更多