2015-06-17 3 views
0

Я пользуюсь jQuery Validation Plugin и мой код не работает должным образом. То, что я хочу, - это когда я нажимаю кнопку отправки, программа проверяет правильность заполнения формы и содержит URL-адрес, а затем запускает функцию. В этом случае всегда alert('true).jQuery .valid() не работает? (Validation Plugin)

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

Не уверен, если это уместно, но я использую флягу и 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> 

UPDATE

$('#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, даже если оба поля пустые.

+0

FYI ... Было бы лучше, если бы вы предоставить jsFiddle – Abude

ответ

0

Вы могли бы попробовать это так:

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

Это будет проверять форму при нажатии на кнопку, а когда форма щелкнул.

+0

я все еще получаю ту же ошибку, когда он говорит: «Действительно: True» в каждом конкретном случае. – Jaquacky

+0

Есть ли у вас какие-либо данные для проверки? Если нет, это всегда будет правдой. – depperm

+0

Да, я думаю, проблема в том, что, поскольку я использую флягу, я могу просто положить '{{form1.svn_url1}}', который создает текстовое поле ввода с использованием WTForms, и, возможно, плагин проверки jQuery не видит это как вход , Как я могу это исправить? – Jaquacky

0

Вы не установили никаких правил валидации. Плагин видит оба поля в качестве необязательных строк. Вы можете изменить это несколькими способами.

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

(Обратите внимание, что иногда называют его svn_url1, а иногда svn_url1s.)

Самый простой способ выполнить это с URLField

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

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

Другой способ WTForm чтобы сделать это заключается в использовании метода validate для объекта формы и передачи ему правил проверки.

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

Я пробовал оба метода, однако, я все равно получаю ту же ошибку. Метод, который я предпочел использовать, - это метод проверки достоверности. Не могли бы вы взглянуть на обновление вопроса и посмотреть, что я делаю неправильно? – Jaquacky