jQuery .valid()无效? (验证插件)

时间:2015-06-17 14:49:42

标签: javascript jquery flask flask-wtforms

我使用jQuery Validation Plugin并且我的代码没有按预期工作。我想要的是当我单击提交按钮时,程序将检查表单是否正确填写并包含一个URL然后运行一个功能。在这种情况下,它总是alert('true)。

$(document).ready(function(){
    $('#button1').submit(function() {
        if($("#button1").valid()){
            alert('true');
        }
        else{
            alert('false');
        }
    });
});

不确定这是否相关,但我使用的是Flask和WTForms:

形式:

class SVN_Path(Form):
    svn_url1=StringField('SVN Directory:',[validators.URL()])
    svn_url2=StringField('SVN Directory:',[validators.URL()])

HTML:

<form id="button1" action="{{ url_for('test4') }}"method="post" name="SVNPATHS">
    {{form1.hidden_tag()}}
    <br>
    <div class="svninput" id="input1">
        {{ form1.svn_url1.label }}
        {{ form1.svn_url1 }}
    </div>
    <input id="update" class="button" type="submit" name="updatepaths" value="Update">
    <div class="svninput" id="input2">
        {{ form1.svn_url2.label }}
        {{ form1.svn_url2 }}
    </div>
</form>

更新

    $('#button1').submit(function(){
        var is_valid = $(this).validate({
            rules: {
                svn_url1: {
                    required: true,
                    url: true
                },
                svn_url2: {
                    required: true,
                    url: true
                }
            }
        });
        if(is_valid){
            alert('true');
        }
        else{
            alert('false');
        }
    });
});

我尝试了dirn建议的内容,但即使两个字段都为空,这仍然会返回true。

2 个答案:

答案 0 :(得分:0)

你可以这样试试:

var form = $( "#button1" );
form.validate();
$( "#update" ).click(function() {
  alert( "Valid: " + form.valid() );
});

这将在单击按钮时验证表单,而不是在单击表单时验证表单。

答案 1 :(得分:0)

您尚未设置任何验证规则。该插件将两个字段视为可选字符串。你可以通过几种方式改变它。

<input type="url" name="svn_url1" required>

(请注意,有时您将其称为svn_url1,有时称为svn_url1s。)

最简单的方法是使用WTForm URLField

from wtforms.fields.html5 import URLField
from wtforms.validators import wtforms.validators.DataRequired

class SVNPath(Form):
    svn_url1 = URLField(validators=[wtforms.validators.DataRequired()])

另一种方法是对表单对象使用validate方法并将验证规则传递给它。

$('#button1').submit(function() {
  var is_valid = $(this).validate({
      rules: {
        svn_url1: {
          required: true,
          url: true
        }
      }
    });
});