2014-07-07 69 views
-1

我試圖用jQuery(用戶發送的電子郵件/消息)構建確認腳本到我們的電子郵件地址。在jquery表單確認後發送電子郵件

.php工作正常,但jQuery沒有檢查輸入是否爲空併發送。

任何幫助?

HTML

<form onsubmit="return validateForm()" action="send.php" id="myform" method="post"> 
       <label>Your name: </label> 
        <input type="text" name="username" placeholder="Type your name" id="username" class="required"/> 
       <label>Your email: </label> 
        <input type="text" name="email" placeholder="Type your email address" id="email" class="required"/> 
       <label>Subject/Title: </label> 
        <input type="text" name="subject" placeholder="Title/Subject" class="required"/> 
       <label>Write us something: </label> 
        <textarea col="99" placeholder="Describe as detailed as possible, what you want us to do, for you. Send what you want and we will reply to you, as soon as possible!" id="message"></textarea> 
       <input type="submit" name="submit" value="Enviar" id="submit"/> 
      </form> 

      <div class="alert alert-warning hidden" id="warning">An error has occured! Please fill your email and message!</div> 
      <div class="alert alert-success hidden" id="success">Message sent! We will reply to you, as soon as possible!</div> 

jQuery的

function validateForm() { 
    var x = document.forms["myform"]["message"].value; 

    if (x == null || x == ""){ 
     $("#warning").removeClass("hidden"); 
     $("#warning").addClass("show"); 
     $('#warning').delay(5000).fadeOut(500); 
     return false; 
    } 

    if (validateForm == true){ 
     $("#sucess").removeClass("hidden"); 
     $("#success").addClass("show"); 
     $('#sucess').delay(5000).fadeOut(500); 
     return true; 
    } 
} 
+0

防止默認行爲。嘗試'event.preventDefault();'在點擊提交按鈕時防止默認的提交行爲。 – codeninja

+0

[JQuery表單驗證]的可能重複(http://stackoverflow.com/questions/965967/jquery-form-validation) –

+0

你可以做(​​例如)一個消息框的按鈕,將$'yourform).data ( '確認',TRUE);'。然後在提交事件'if($(yourform).data('confirmed')){/ * allow * /}'檢查該值。 –

回答

0

如果你只想驗證如果消息字段爲空...

試試這個:

form標籤刪除onsubmit功能

並將其插入按鈕:

<input onclick="return validateForm();" type="submit" name="submit" value="Enviar" id="submit"/> 

JQuery的:

function validateForm() { 
    if ($('#message').val() == ""){ 
     $("#warning").removeClass("hidden"); 
     $("#warning").addClass("show"); 
     $('#warning').delay(5000).fadeOut(500); 
     return false; 
    } 
    else { 
     return true; 
    } 
} 

Demo

你可以同時使用click本功能離子的JQuery而不是onclick直列

+1

在第2行中,您的意思是$('#message') - 'message'是一個編號 –

+0

更新了它:)謝謝! – imbondbaby

+0

它不工作,仍然發送沒有任何價值 – uniqezor

0
var x = document.forms["myform"]["message"].value; 
            ^^^^^^^---array is built with "name" attributes 

<textarea col="99" ..snip.. id="message"></textarea> 
           ^^^^^^^-this is an ID, not a name 

您的文字區域不具有name屬性,所以它不會形式數組中出現。而且因爲它確實有一個id,你可以只使用

var x = document.getElementById('message').value; 

甚至

var x = $('#message').value(); 
0

我不知道你if(validateForm == true)的意思。試試這個:表格的第一

function validateForm() { 
    var x = $("#message").val(); 

    if (x == "") { 
     $("#warning").removeClass("hidden"); 
     $("#warning").addClass("show"); 
     $('#warning').delay(5000).fadeOut(500); 
     return false; 
    } 
    else { 
     $("#sucess").removeClass("hidden"); 
     $("#success").addClass("show"); 
     $('#sucess').delay(5000).fadeOut(500); 
     return true; 
    } 
} 

Working example