与某些URL jQuery验证错误

问题描述:

我一直在寻找一个答案,现在一段时间,想知道如果任何人有同样的问题。与某些URL jQuery验证错误

jQuery.validation插件可以正常工作,通常只有几个URL不能正确验证,我正在努力弄清楚为什么(或有效的解决方法)。

普通的URL做工精细,如http://www.play.com,但下面的网址永远无法验证:

http://www.play.com/DVD/Blu-ray/4-/21404340/Transformers-3-Dark-Of-The-Moon-3D/Product.html?searchstring=&searchtype=allproducts&searchsource=2&searchfilters=ae212 {644651}%2BC {600}%2B & urlrefer =搜索

我猜是由于{}字符。

我使用的是通用的验证插件的使用:

$("#myform").validate({ 
    rules: { 
    field: { 
     required: true, 
     url: true 
    } 
    } 
}); 

任何深入了解此修复将是非常赞赏。

Yes, those characters are invalid.您可能希望采用的一个选项是在您的URL输入上有一个on change事件,它用URI编码值替换当前值。

$('.url-field').change(function() { $(this).val(encodeURI($(this).val())); }); 
+0

不幸的是,这并不工作,得到的URL转换的东西,如:HTTP%3A%2F%2Fwww.play.com – 2012-02-14 21:30:01

+0

对不起,你要'encodeURI'。这将保留原始URL的有效部分。 – HackedByChinese 2012-02-15 01:16:55