【问题标题】:jQuery validate URL without http:// [duplicate]jQuery验证没有http://的URL [重复]
【发布时间】:2019-02-04 18:52:28
【问题描述】:

我正在尝试使用 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

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

【问题讨论】:

    标签: javascript jquery url jquery-validate


    【解决方案1】:

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

    $(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>

    【讨论】:

    • 它完美运行感谢@Rory
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-04
    • 2018-11-07
    相关资源
    最近更新 更多