2013-03-01 42 views
1

尋找一些指針來處理JQuery。JQuery檢查多個輸入並選擇值

我有三個表單元素:

選擇 - ID:小屋
輸入[文] - ID:日期
選擇 - ID:持續時間

我需要做的是使函數如果其中任何一個有變化或模糊,則運行,但腳本也要檢查每個值是否有值,並將這三個值傳遞給腳本。

所以我需要填充三個變量:

var LodgeChoice = $('#lodge').val(); 
       var DateParse = $('#dates').datepicker('getDate'); 
       var DateChosen = DateParse.getFullYear() + '-' + (DateParse.getMonth() + 1) + '-' + DateParse.getDate(); 
       var Duration = $('#durationNights').val(); 

,但我不能確定什麼叫人將填充表單變量。

+0

http://api.jquery.com/on – Blazemonger 2013-03-01 20:34:32

回答

2
$("#lodge, #dates, #durationNights").on("blur change", function() { 
    //get/process values here 
}); 

如果您需要知道哪些元素改變出於某種原因,你可以參考$(this)從事件處理函數內部

編輯:

在回答您的評論:如果在繼續之前,你還需要確保所有三個都有一個價值,你不需要有一個大的if語句。相反,你可以做到以下幾點:

var fields = $("#lodge, #dates, #durationNights"); 
fields.on("blur change", function() { 
    var valuesSet = true; 
    fields.each(function() { 
     if (!$(this).val()) { //inside a jQuery "each", "this" refers to the current item in the loop 
      valuesSet = false; 
      return false; //break out of the "each" loop 
     } 
    }); 
    if (valuesSet) { 
     //process values 
    } 
}); 
+0

這所以每當一個用戶取消選擇將運行您的匿名回調這些領域的一個設置模糊事件綁定。 裏面的回調使用 $(this).val();以抓住客戶剛剛取消選擇的任何一個元素的價值。 – iAmClownShoe 2013-03-01 20:37:47

+0

這不是他想要的嗎? 「如果其中任何一個有變化或模糊,就會導致函數運行」 – 2013-03-01 20:39:25

+0

是的,這就是爲什麼我給了你一個upvote。我只是想澄清一點,因爲很多人在$(this)的範圍上有困難。如果您考慮場景,如果將相同的模糊事件和處理程序綁定到所有元素,那麼在處理程序中,您需要確定哪些元素應該獲取值和IMO,最有效的方法是在設置時使用此元素變量。 – iAmClownShoe 2013-03-01 21:48:00