jQuery - 函数重复从应用它的第一个元素产生

时间:2011-12-16 12:10:21

标签: jquery forms function variables

我正在处理一份包含多个出生日期字段的申请表。

我用select元素创建了一个简单的日期输入。当select元素更改时,值将被复制到另一个隐藏文本字段中以保留结果。

我编写了一个我想要应用于此日期输入的所有实例的函数,但是,在填写第一个日期后,它会在附加日期输入中重复相同的值。

我认为它与如何为函数设置变量有关。

如何在不重复结果的情况下将函数应用于我应用的每个实例?

Js Fiddle示例:http://jsfiddle.net/allyreid/JyE8b/5/

帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

以下是修复:

$.fn.dateofbirth = function() {
         return this.each(function() {
              $(this).children('select').change(function(){
                  var cont = $(this).parent();
                  var day = $("select[name='Day']", cont).val();
                  var month = $("select[name='Month']", cont).val();
                  var year = $("select[name='Year']", cont).val();
                  var fullDate = day + " / " +  month  + " / " + year;
                  $(this).parent().find('.result').val(fullDate);

               });
          });
    };

    $('td.dob').dateofbirth();

这里的问题是,在“onChange”事件中,您使用:$("select[name='Day']").val();选择值,而这只是选择第一天的下拉菜单,这就是您总是获得相同值的原因。

修复包括首先获取发起change事件的元素的父元素,然后使用INSIDE那个父元素的下拉列表。

如果您对核心有疑问,请与我们联系。

还有一件事

这就是诀窍:

使用jQuery选择元素时,可以在容器内指定查找位置。这就是我在那里所做的,你有$(SELECTOR STRING, container_element)