javascript - 没有 http ://的 jQuery 验证 URL

标签 javascript jquery url jquery-validate

<分区>

我正在尝试使用 jQuery validate 验证没有 http://的 url,但它不起作用。我正在关注来自 here 的 mtosic 的回答

<form id="form" method="post" action="#">
    <input type="text" name="url" id="url" />
    <button type="submit">Submit</button>
</form>

  $.validator.addMethod('validUrl', function(value, element) {
    var url = $.validator.methods.url.bind(this);
    return url(value, element) || url('http://' + value, element);
  }, 'Please enter a valid URL');

$("#form").validate({
  rules: {
    "url": {
      url: "validUrl"
    }
  },
  submitHandler: function (form) { 
    alert('valid form submitted'); 
    return false; 
  }
});

当我输入像“www.google.com”这样的地址时,我仍然收到无效错误。

Here's the fiddle

问题是什么?谢谢你的帮助

最佳答案

问题是因为您已经定义了名为 validUrl 的规则,但您仍在 $.validate 中的元素上设置 url 规则 设置。另请注意,您要将 bool 值而不是字符串传递给属性。试试这个:

$(document).ready(function() {
  $.validator.addMethod('validUrl', function(value, element) {
    var url = $.validator.methods.url.bind(this);
    return url(value, element) || url('http://' + value, element);
  }, 'Please enter a valid URL');

  $("#form").validate({
    rules: {
      "url": {
        validUrl: true // <-- change this
      }
    },
    submitHandler: function(form) {
      alert('valid form submitted'); // for demo
      return false; // for demo
    }
  });
});
body {
  padding: 20px;
}

label {
  display: block;
}

input.error {
  border: 1px solid red;
}

label.error {
  font-weight: normal;
  color: red;
}

button {
  display: block;
  margin-top: 20px;
}
<script type="text/javascript" src="//code.jquery.com/jquery-2.0.2.js"></script>
<script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.0/jquery.validate.min.js"></script>
<link rel="stylesheet" type="text/css" href="//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css">
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.0/additional-methods.js"></script>
<form id="form" method="post" action="#">
  <input type="text" name="url" id="url" />
  <button type="submit">Submit</button>
</form>

关于javascript - 没有 http ://的 jQuery 验证 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54522544/

相关文章:

javascript - Ext js 中的一切都是蓝色的吗?

javascript - 理解和阅读 jQuery

javascript - AJAX/PHP 登录 - 错误消息不起作用

javascript - 网站在加载时跳转到中间内容。一页设计

javascript - 使用 jQuery 设置隐藏输入的值

JQuery Slider 事件处理程序回调

java - 复制文件。查找它的路径

javascript - 如果指定的域不等于,则当前 URL 应用此 jQuery 以及具有相同域的页面

javascript - jquery $(this).find 不适合我

php - 在 Magento 中获取类别 URL 键