2013-07-17 42 views
0

我製作了一個HTML表單,它被分成了多個部分。我使用jQuery類添加到根據什麼部分主體元素Jquery:對錶單中的動態類做出反應

已經填寫。

默認情況下,體內有一類purchase-stop。當所有部分填入時,這將更改爲purchase-go

當用戶點擊提交按鈕,我用下面的代碼來顯示一個消息:

$("input").on('click', '.purchase-stop', function() 
{ 
    alert("You haven't visited all sections. Please visit them all to ensure you are happy with the choices"); 
}); 

麻煩的是,這將顯示出更purchase-stop已更改爲purchase-go

如何才能讓它只在類別爲purchase-stop時顯示?

此外,窗體上的兩個字段是強制性的。我用下面的代碼來檢查,如果這些強制性的部分被填充:

$(".changing-room").submit(function(e) 
    { 
     e.preventDefault(); 

     var isFormValid = true; 
     $("input.required").each(function() 
     { 
      if ($.trim($(this).val()).length === 0) 
      { 
       $(this).parent().addClass("error"); 

       isFormValid = false; 
      } 
      else 
      { 
       $(this).parent().removeClass("error"); 
      } 
     }); 
     if (!isFormValid) 
     { 
      alert("Some fields are blank (highlighted in red). Please fill them in"); 
      $('input').blur(); 
     } 

     if (isFormValid) 
     { 
      $('body').addClass('purchase-active'); 
      window.scrollTo(0, 0); 
     } 
     return isFormValid; 

    }); 

但同樣,我只想當人體類設置爲purchase-go(而不是purchase stop),它運行。

根據Jquery文檔,我必須讓Jquery在一個動態類上運行(因爲purchase-go不在載入HTML中)。要做到這一點,我必須使用On() function。 的功能上是由如下:

.on("action [e.g. click]", "[trigger element]", function(event) 

不過,我指定的觸發要素,但它不工作。

+0

只有在您更改要購買的正文類後,纔會打電話給您的點擊處理程序 – bipen

回答

1

on()不符合您的想法。

$("[source].on("[action]", "[trigger element]", function(event)

當您使用on,你要綁定到source元素,並且觸發事件action當內source發生在trigger element

所以你的情況,你正在建立一個單擊處理火災時,帶班purchase-stop這是任何input後裔的元素是click版。

你需要做這樣的事情:

$('input[type="submit"]').click(function(e) { 
    if ($('body').hasClass('purchase-stop')) { 
     alert("You haven't visited all sections. Please visit them all to ensure you are happy with the choices"); 
    } 
}); 

雖然,使用對身體有類名來表示形式是否有效是有點奇怪。您可以將該功能添加到您的驗證功能。

+0

這很出色,但是如何才能獲取代碼以檢查強制性部分,以便在購物時附加到正文類時才觸發。我曾嘗試將它包裝在If .hasClass語句中,但它不起作用。我使用body類的原因是CSS因不同設備的不同風格而改變。 –

+1

你是說你只想在'$(「。changing-room」)中進行驗證。submit()'當主體有合適的類時阻塞嗎? –

+0

是的。謝謝你的幫助! –