我有一组属于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?
答案 0 :(得分:3)
答案 1 :(得分:2)
您正在使用全局事件对象,而是使用传递给处理程序的事件对象作为第一个参数。在IE浏览器的事件模型中,event
对象没有作为参数传递,而是名为event
的全局变量引用了事件对象(我认为现在其他浏览器也支持它)。只有当您更改输入字段的值时触发的本机事件才会发生这种情况。
但是,datepicker不触发本机点击事件,它以编程方式触发,可能无法正确设置全局事件对象。
$(".mainField").change(function (event) {
console.log(event.target.id);
});
演示:Fiddle
这与使用this.id
相同,其中this
指的是事件处理程序所针对的元素