迭代下拉模糊的下拉列表

时间:2013-11-29 05:38:55

标签: jquery

我有一个表格,其中有出生日期字段,显示在3个下拉列表中(月日期年份)。我试图根据课程验证这些下拉菜单。 目前,验证是基于身份验证完成的。比方说,如果有5个dob字段,则基于它们的5个dob字段中的每一个都有5个验证函数 ID的。但这不是一个好方法。所以现在我正在尝试为所有这些dob字段创建一个公共类,并尝试进行验证。 所有dob字段都不显示..有些是隐藏的。根据某些条件,显示它们。 一个下拉列表的HTML如下所示。同样地,我还有另外5套

<div class="dob">  
<select class="dob1" id="dob_month" name="dob_month">
    <option value="">Month</option>
    <%=dob_1%>
</select>
<span class="inline-text-dob"></span>

<select  class="dob2" id="dob_date" name="dob_date" >
   <option value="">Day</option>
    <%=dob_2%>
</select>

<span class="inline-text-dob"></span>

<select  class="dob3"  id="dob_year" name="dob_year" title="Please enter valid Date of Birth.">
    <option value="">Year</option>
        <%=dob_3%>
</select>
</div>

现在我需要在每个下拉菜单的模糊处以及页面的提交中验证每个出生日期字段。我也有js函数。对于单个dob字段,该函数工作正常。但是当我有超过1个dob字段时,我正在写的循环存在一些问题。 JS功能

function dobValidation(){
//code

var input1 = $('select.dob1');
var input2 = $('select.dob2');
var input3 = $('select.dob3');

var dob1 = input1.val();
var dob2 = input2.val();
var dob3 = input3.val();
alert("dob1 "+dob1+" dob2 "+dob2+" dob3 "+dob3);//Here it always alerts the first dob field values

//doing other validations like checking month, age etcc

return true/false;
}

关于每个人的模糊,我这样做。

$('.dob1').each(function(){
    $('.dob1').blur(dobValidation);
});
$('.dob2').each(function(){
    $('.dob2').blur(dobValidation);
});
$('.dob3').each(function(){
    $('.dob3').blur(dobValidation);
});

在页面的Sumit上,我这样做。

$('#form1').submit(function() {
    var returnValue = true;

    var retDOB = dobValidation();
    return returnValue;
});

但是现在我有一个问题,如果我为第一个dob字段选择了所有3个值,当我选择第二个dob字段时,它仍然警告第一个值。 循环中似乎存在问题。 有人可以指导我吗?

1 个答案:

答案 0 :(得分:0)

您在每个dobValidation()代码

blur上致电select

而不是: -

$('.dob1').each(function(){
    $('.dob1').blur(dobValidation);
});
$('.dob2').each(function(){
    $('.dob2').blur(dobValidation);
});
$('.dob3').each(function(){
    $('.dob3').blur(dobValidation);
});

试试这个: -

$('body').not('.dob').click(function () {
  dobValidation()
})

$('.dob').click(function (e) {
    e.stopPropagation();
})

编辑: - 用于验证每个输入创建一个函数说validateIt()并在该元素模糊时调用它

$('.dob1,.dob2,.dob3').each(function(){

    $(this).blur(function(e)
    {
        validateIt($(this))
    });
});

function validateIt(obj)
{
    alert(obj.val())
    //do something..
}