我为问题的措辞道歉,但我的一半问题不知道如何提出这个问题。
我创建了一个名为date的php表单项。它只是一个包含一些特殊类和属性的文本字段。 HTML输出如下所示:
<div class="form-item type-date name-dob required">
<label for="dob"> DOB <span class="required-text">*</span></label>
<input type="textfield" name="dob" maxlength="10" size="12" value="07/01/2015" class="datepicker processed hasDatepicker" change_month="1" change_year="1" min_year="-120" max_year="+0" id="dp1452013829790">
</div>
然后我想使用这些自定义属性,change_month,change_year等。从一个js调用附加datepicker,而不是为日期字段的每个实例编写js。
$('.form-item.type-date input').datepicker(
{
'changeMonth' : $(this).attr('change_month') == "1",
'changeYear' : $(this).attr('change_year') == "1",
'yearRange' : $(this).attr('min_year') + ':' + $(this).attr('max_year')
});
未定义js代码$(this)
的部分。我希望它是选择器$('.form-item.type-date input')
的一个实例。
如何访问选择器实例的属性?
试图为此制作一个jsfiddle,但由于某种原因无法让jquery ui使用它。 https://jsfiddle.net/zL8on6np/5/如果您知道如何使库正常工作,请随意使用它。
答案 0 :(得分:2)
$(this)
不是你所期望的原因是它不在选择器的回调函数中,所以它可能在全局范围内。
您可以使用jQuery的each函数迭代相关的input
元素,如下所示:
$('.form-item.type-date input').each(function() {
$(this).datepicker(
{
'changeMonth' : $(this).attr('change_month') == "1",
'changeYear' : $(this).attr('change_year') == "1",
'yearRange' : $(this).attr('min_year') + ':' + $(this).attr('max_year')
});
});
<强> Working fiddle 强>
答案 1 :(得分:1)
没有类型textfield
应为text
:
<input type="text" name="dob" maxlength="10" size="12" value="07/01/2015" class="datepicker processed hasDatepicker" change_month="1" change_year="1" min_year="-120" max_year="+0" id="dp1452013829790">
希望这会有所帮助。