2016-12-13 41 views
3

我使用JQuery.Validation plugin驗證表單中的一些字段,但我不希望使用submit按鈕,我想用只是一個<input type="button">和使用JQuery一次點擊我想打電話給我的控制器,唯一不同的是它不是submit按鈕,所以即使字段錯誤或未驗證,它也會調用控制器,即使字段值錯誤,因爲我正在使用.click()事件JQuery單擊該按鈕時,我想要在字段中出現錯誤值並且驗證顯示錯誤消息,即使單擊該按鈕也不會調用我的動作控制器,我該如何達到此目的? 這是我的html代碼:jQuery驗證形式,但不是`submit`按鈕

<script src="~/js/jquery.validate.js"></script> 
<form action="post" class="rightform newsletter" id="formSubscription"> 
    <div class="title"> 
     <img src="http://ligresources.blob.core.windows.net/public/UK/Content/Images/newsletter.png" alt="">NEWSLETTER 
    </div> 
    <input type="text" id="txtFullName" name="fullName" placeholder="Full name" required> 
    <input type="email" id="txtEmail" name="email" placeholder="Email address" required> 
    <button type="button" id="btnSubscription" data-url="@Url.Action("SubscriptionEmail","Email")" style="background-color:#f66804;">SUBSCRIBE TO NEWSLETTER</button>     
</form> 

這是JQuery.Validation plugin代碼:

$(document).ready(function() { 
    $("#formSubscription").validate({ 
     rules: { 
      email: { 
       required:true, 
       email:true 
      }, 
      fullName: { 
       required:true 
      } 
     }, 
     messages: { 
      email: { 
       required: "Please enter an email address", 
       email: "Please enter a valid email address" 
      } 
     } 
    }); 
}); 

這是jQuery函數,我有暫時扔在btnSubscriptionclicked

$(document).ready(function() { 
    $("#btnSubscription").click(function() { 
     SendSubscription();   
    }), 
    return false; 
}), 

function SendSubscription() {  
    $.ajax({ 
     type: "post", 
     url: $("#btnSubscription").data("url"), 
     data: { fullName: $("#txtFullName").val(), emailAddress: $("#txtEmail").val() }, 
     success: function() { 
      alert("email sent") 
     }, 
     error: function() { 
      alert("An error occurred..") 
     } 
    }); 
} 
+0

如果你不想使用提交按鈕,那麼你可以使用onfocusout事件調用功能。 – Nevermore

+1

將你的輸入改爲'type =「email」' – Endless

+0

@Endless你是對的,我正在測試,我忘了再次將它改爲電子郵件,它已完成:) – AlexGH

回答

2

一旦你設置你的.validate()所有你需要做的就是在你的.click()處理程序中調用.valid()方法。這是提交自動執行的操作,但您可以使用.valid()方法手動調用它。

1

你應該使用類型submit,然後你可以使用submitHandler爲了管理你想要做其他的事情,比如:

$("#formSubscription").validate({ 
    submitHandler: function(form) { 
    // do other things for a valid form 
    form.submit(); 
    } 
}); 

在文檔獲取一個戰利品:https://jqueryvalidation.org/validate/

0

放的,如果在SendSubscription功能:

if (yourValidationDidntPass) { 
    //do whatever you want 
} 
else { 
    $.ajax({...}); 
}