如何获取包含datepicker的输入字段的id

时间:2014-09-05 10:59:37

标签: javascript jquery jquery-ui datepicker

我有一组属于mainField类的输入字段,如下所示:

<input type="text" class="mainField" id="datepicker">
<input type="text" class="mainField" id="task">
<input type="text" class="mainField" id="subtask">

并在JavaScript

$("#datepicker").datepicker();

$(".mainField").change(function () {
   alert(event.target.id);
}); 

虽然这会在我更改普通字段时返回id,但是当我在datepicker中选择不同的日期时,它不会起作用。当我选择不同的日期时(如果不使用日期选择器的选择方法),如何获得该字段的ID?

2 个答案:

答案 0 :(得分:3)

您可以使用this.id获取当前元素的ID。

$(".mainField").change(function () {
   alert(this.id);
});

Fiddle

答案 1 :(得分:2)

您正在使用全局事件对象,而是使用传递给处理程序的事件对象作为第一个参数。在IE浏览器的事件模型中,event对象没有作为参数传递,而是名为event的全局变量引用了事件对象(我认为现在其他浏览器也支持它)。只有当您更改输入字段的值时触发的本机事件才会发生这种情况。

但是,datepicker不触发本机点击事件,它以编程方式触发,可能无法正确设置全局事件对象。

$(".mainField").change(function (event) {
    console.log(event.target.id);
}); 

演示:Fiddle

这与使用this.id相同,其中this指的是事件处理程序所针对的元素