2013-03-24 24 views
0

我發現這個教程但有似乎是Java腳本代碼中的錯誤,可以在下面找到創建一個電子郵件的形式發送電子郵件:問題的代碼來檢查空輸入字段

$('#sendfeedback').on("click", function() { 
var url = 'api/send.php'; 
var error = 0; 
var $contactpage = $(this).closest('.ui-page'); 
var $contactform = $(this).closest('.contact-form'); 
$('.required', $contactform).each(function (i) { 
    if ($(this).val() === '') { 
     error++; 
    } 
}); // each 
if (error > 0) { 
     alert('Please fill in all the mandatory fields. Mandatory fields are marked with an asterisk *.'); } 
else {//some code} 

的點擊工作正常,但即使填充字段錯誤顯示我怎麼能阻止這種情況發生?請注意,當我刪除它的這部分代碼的作品。以下是HTML代碼:

<div class="contact-thankyou" style="display: none;"> 
       Thank you. Your message has been sent. We will get back to you as soon as we can. 
      </div> 
      <div class="contact-form"> 
       <p class="mandatory">All fields are Manadatory</p> 
       <div data-role="fieldcontain"> 
        <label for="senderName">Your Name:</label> 
        <input type="text" name="senderName" id="senderName" class="required"> 
       </div> 
       <div data-role="fieldcontain"> 
        <label for="senderEmail">Your Email Address:</label> 
        <input type="email" name="senderEmail" id="senderEmail" class="required"> 
       </div> 
       <div data-role="fieldcontain"> 
        <label for="subjectCategories">Subject</label> 
         <select name="subjectCategories" id="subjectCategories" data-native-menu="false" class="required"> 
          <option value="" data-placeholder="true">Select...</option> 
          <option value="Registration">Register as an Artist</option> 
          <option value="Feature">Want your music featured?</option> 
          <option value="Advertising">Advertise your company</option> 
          <option value="App Issues">App Issues</option> 
          <option value="General Feedback">General Feedback</option> 
         </select> 
       </div> 
       <div data-role="fieldcontain"> 
        <label for="message">Your Message:</label> 
        <textarea name="message" id="message" placeholder="Please type your message" class="required" cols="80" rows="10" maxlength="10000"></textarea> 
        </div> 
       <div class="send"><a href="javascript:;" data-role="button" data-iconpos="right" id="sendfeedback">Send Feedback</a></div> 
      </div> 
+1

使用jQuery .live()的不再推薦,推薦使用。對(),因爲它現在沒有.live() – Vortex 2013-03-24 15:20:47

+0

OK的弊端會讓但是這種變化是心不是錯誤,雖然作爲錯誤必須與強制字段,即使他們填補我仍然得到錯誤 – 2013-03-24 15:42:56

+0

我沒有看到任何問題。如果'*'標記的字段中填充了數據,則不會收到任何錯誤提示。 [看演示](http://jsfiddle.net/x7CDV/) – SachinGutte 2013-03-24 15:50:50

回答

0

在您的代碼中,您希望驗證類別爲required的四個字段。在#subjectCategories選擇菜單中,類required正在被添加兩次,一個用於<select>彈出式菜單,另一個被添加到<span>下的<a>,其調用選擇菜單#subjectCategoriesspan沒有任何價值,它導致了錯誤。

我做了一個簡單的修復,在觸發驗證之後添加下面的代碼,從span中刪除多餘的required類。

$('#sendfeedback').on("click", function() { 
$($.mobile.activePage).find('span').removeClass('required'); 
//.... 
//the rest of your code 
//... 
}); 
+0

這個工作,我不知道你是如何看到其他所需的類,但沒有看到它在我的代碼是jquery創建,當代碼在瀏覽器中啓動?如果不是,我想清潔如果可能的話,我可以將其移除它 – 2013-03-25 09:46:48

+0

我使用Chrome來調試代碼(f12).JQM自動將額外的類添加到'span'。我不確定是否有更清晰的方法來移除它,但是,您可以使用'.contact-form'而不是'$ .mobile.activePage'更具體,無論如何,它只會找到'span'類,並且不會影響其他元素,所以 – Omar 2013-03-25 09:50:25

+0

會使它變成那樣感謝您的幫助 – 2013-03-25 09:56:21