2013-03-01 37 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