无法在提交时验证表单

时间:2015-06-06 15:13:26

标签: javascript jquery ajax forms livevalidation

我正在使用名为liveValidation.js的小型库。 我使用它来验证表单中的几个输入。

如果有一些无效的输入,它应该会自动禁用表单按钮,但它无法正常工作。

这是我的HTML代码:

<form method="POST" id="contactForm">
     <label for="name">Name</label>
     <input type="text" name="name" id="contactFormName" value=""/>
     <label for="email">E-Mail</label>
     <input type="text" name="email" id="contactFormEmail" value=""/>
     <label for="message">Your message here</label>
     <textarea name="message" id="contactFormMessage"></textarea>
     <input type="submit" id="submit" value="submit"/>
</form>

以下是我如何初始化liveValidation.js:

function liveValidation() {
    var name = new LiveValidation('contactFormName');
    name.add(Validate.Presence);
    var email = new LiveValidation('contactFormEmail');
    email.add(Validate.Presence);
    email.add(Validate.Email);
    var message = new LiveValidation('contactFormMessage');
    message.add(Validate.Presence);
};
$(document).ready(function ($) {
    $("#loadingDiv").hide(400);
    liveValidation();
    sendEmail();
});

这是AJAX请求代码:

function sendEmail() {
    var form = $("#contactForm");
    var resultDiv = $(".formResult");
    $("#submit").click(function () {
    $.ajax({
        type: "POST",
        url: "sendEmail.php",
        data: form.serialize()
        }).done (function (){
          resultDiv.addClass('success').html('Message sent successfully')
        }).fail(function () {
          resultDiv.addClass('fail').html("Message not sent. Try again")
        });
     }
  });
};

有人想过为什么这不能正常工作? 这里是livevalidation网站,如果它可以帮助 - &gt; http://livevalidation.com/

1 个答案:

答案 0 :(得分:1)

您需要手动检查表单是否有效。为此,您需要一个(任何一个)LiveValidation对象

试试这个

$(document).ready(function ($) {
    liveValidation();
    sendEmail();
});

function liveValidation() {
  var name = new LiveValidation('contactFormName');
  name.add(Validate.Presence);
  var email = new LiveValidation('contactFormEmail');
  email.add(Validate.Presence);
  email.add(Validate.Email);
  var message = new LiveValidation('contactFormMessage');
  message.add(Validate.Presence);

  var automaticOnSubmit = name.form.onsubmit;
  name.form.onsubmit = function(){
      var valid = automaticOnSubmit();
      if(valid)
          alert('The form is valid!');
      else
          alert('The form is not valid!');
      return false;
  }

};

function sendEmail() 
{

    $("#submit").click(function () {
       //submit form here
   });
 }

另一种更好的方法是,您可以使用任何LiveValidation对象来附加事件

#!/bin/bash

FILE=/tmp/list ## Assuming the list of files are in this file.
for file in $(cat $FILE); do 
   OLD_FILE=$file
   NEW_FILE=$(echo $file|sed -e 's/jpg$/png/')
   mv $OLD_FILE $NEW_FILE
done