Javascript 如何获取包含日期选择器的输入字段的id

Javascript 如何获取包含日期选择器的输入字段的id,javascript,jquery,jquery-ui,datepicker,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"> 当我更改普通字段时,它返回id,但当我在日期选择器中选择其他日期时,它不起作用。当我选择不同的日期(

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

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

当我更改普通字段时,它返回id,但当我在日期选择器中选择其他日期时,它不起作用。当我选择不同的日期(不使用datepicker的select方法)时,如何获取字段id?

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

但是datepicker不会触发本机单击事件,它是通过编程方式触发的,这可能没有正确设置全局事件对象

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


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

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

但是datepicker不会触发本机单击事件,它是通过编程方式触发的,这可能没有正确设置全局事件对象

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


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

您可以使用
This.id
获取当前元素的id

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

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

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