我正在处理一份包含多个出生日期字段的申请表。
我用select元素创建了一个简单的日期输入。当select元素更改时,值将被复制到另一个隐藏文本字段中以保留结果。
我编写了一个我想要应用于此日期输入的所有实例的函数,但是,在填写第一个日期后,它会在附加日期输入中重复相同的值。
我认为它与如何为函数设置变量有关。
如何在不重复结果的情况下将函数应用于我应用的每个实例?
Js Fiddle示例:http://jsfiddle.net/allyreid/JyE8b/5/
帮助表示赞赏。
答案 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)