Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用jQuery验证插件规范化有效值?_Jquery_Validation - Fatal编程技术网

如何使用jQuery验证插件规范化有效值?

如何使用jQuery验证插件规范化有效值?,jquery,validation,Jquery,Validation,让我们看一个简单的场景,其中要求用户输入加拿大邮政编码。以下邮政编码均有效且等效: h0h0h0 h0h0h0 h0h0h0 我希望用户输入其中的任何一个,但一旦该字段被保留,就可以将值规范化为第一个表单。我的postalCode验证方法确实允许输入其中任何一个,但是,我想知道规范化值的正确方法是什么 也许jQuery验证插件中已经有了这样的功能,我只是看不到 编辑 给定一个函数normalizeInput我想知道如何插入它。也许jQuery验证插件中有一个专门用于此目的的钩子。如果没有,如

让我们看一个简单的场景,其中要求用户输入加拿大邮政编码。以下邮政编码均有效且等效:

  • h0h0h0
  • h0h0h0
  • h0h0h0
我希望用户输入其中的任何一个,但一旦该字段被保留,就可以将值规范化为第一个表单。我的
postalCode
验证方法确实允许输入其中任何一个,但是,我想知道规范化值的正确方法是什么

也许jQuery验证插件中已经有了这样的功能,我只是看不到

编辑

给定一个函数
normalizeInput
我想知道如何插入它。也许jQuery验证插件中有一个专门用于此目的的钩子。如果没有,如何执行此操作,以便在验证成功后保留字段后调用它。

请尝试以下操作:

function normalizePostalCode(s) {
  return s.replace(/(.{3}) ?(.{3})/, '$1 $2').toUpperCase();   
}

var s = "h0h0h0";
s = normalizePostalCode(s); // H0H 0H0
它将删除空白(
\s
),并将每个字母转换为大写,生成未触及的第一种形式,并将第二种和第三种形式转换为第一种形式

编辑:我不认为jQuery验证插件提供了某种规范化回调。但是,您可以使用or事件并检查字段是否为,如果为,则对其进行规范化:

$("#txtPostalCode").blur(function () {
    $this = $(this);
    $this.validate();
    if ($this.valid()) {
      $this.val(normalizePostalCode($this.val()));   
    }
});

尝试以下操作:

function normalizePostalCode(s) {
  return s.replace(/(.{3}) ?(.{3})/, '$1 $2').toUpperCase();   
}

var s = "h0h0h0";
s = normalizePostalCode(s); // H0H 0H0
它将删除空白(
\s
),并将每个字母转换为大写,生成未触及的第一种形式,并将第二种和第三种形式转换为第一种形式

编辑:我不认为jQuery验证插件提供了某种规范化回调。但是,您可以使用or事件并检查字段是否为,如果为,则对其进行规范化:

$("#txtPostalCode").blur(function () {
    $this = $(this);
    $this.validate();
    if ($this.valid()) {
      $this.val(normalizePostalCode($this.val()));   
    }
});

根据Jquery验证网站,您可以为任何给定字段提供一种方法,以便在验证前对值进行规范化:

```

```


但从外观上看,这只是一个字段一个字段的基础。

根据Jquery验证网站,您可以为任何给定字段提供一种方法,以便在验证之前对值进行规范化:

```

```


但从外观上看,这只是一个字段一个字段的基础。

我添加了自己的空白方法

    $(document).ready(function($) {
      jQuery.validator.addMethod("whitespace", function(value, element) { 
       return $.trim( value );
     }, 'whitespace is not allowed'); 
    });

// in rules
    rules: {
      street: {
        whitespace: true, 
        email: true
      },
    }

我添加了自己的空白方法

    $(document).ready(function($) {
      jQuery.validator.addMethod("whitespace", function(value, element) { 
       return $.trim( value );
     }, 'whitespace is not allowed'); 
    });

// in rules
    rules: {
      street: {
        whitespace: true, 
        email: true
      },
    }

你可以感谢我,但不要在以后的问题中添加它。你可以感谢我,但不要在以后的问题中添加它。我已编辑了我的问题。因此,您的回复告诉我们如何实现
normalizeInput
函数,而我想知道如何插入它。一开始我不清楚我需要什么,抱歉。太好了,谢谢。不过有两个问题。1.如果只要
$this.validate()
就足够了,为什么要调用
$this.validate()
?2.我更改了您的
normalizePostalCode
,请参阅。你认为只需一次调用regex就可以编写它吗?1)根据我使用该插件的(有限)经验,我认为
valid()。似乎情况不再如此:)。2) 您可以使用
返回s.replace(/(.{3})(.{3})/,“$1$2').toUpperCase()例如。酷,我认为在这种情况下它比仅仅操纵字符串要慢,但这仍然很酷。我已经编辑了我的问题。因此,您的回复告诉我们如何实现
normalizeInput
函数,而我想知道如何插入它。一开始我不清楚我需要什么,抱歉。太好了,谢谢。不过有两个问题。1.如果只要
$this.validate()
就足够了,为什么要调用
$this.validate()
?2.我更改了您的
normalizePostalCode
,请参阅。你认为只需一次调用regex就可以编写它吗?1)根据我使用该插件的(有限)经验,我认为
valid()。似乎情况不再如此:)。2) 您可以使用
返回s.replace(/(.{3})(.{3})/,“$1$2').toUpperCase()例如.Cool,我认为在这种情况下它比仅仅操纵字符串慢,但这仍然很酷。如果要应用normalizer方法,请不要忘记包含additional-methods.min.js。如果要应用normalizer方法,请不要忘记包含additional-methods.min.js。