字段问题中填写的javascript更改

字段问题中填写的javascript更改,javascript,onchange,Javascript,Onchange,我想对一个文本字段使用onchange()事件,该字段可能由一个使用javascript的日期选择器填充。我曾尝试使用onblur(),onmouseover()等,但它们中没有一个能帮助我在通过日期选择器更改后捕捉其值。 定义日期选择器和填充文本字段的代码部分如下所示: <script type="text/javascript" src="Scripts/cal_.js"></script> <input type="text" name="receive_da

我想对一个文本字段使用
onchange()
事件,该字段可能由一个使用javascript的日期选择器填充。我曾尝试使用
onblur()
onmouseover()
等,但它们中没有一个能帮助我在通过日期选择器更改后捕捉其值。 定义日期选择器和填充文本字段的代码部分如下所示:

<script type="text/javascript" src="Scripts/cal_.js"></script>
<input type="text" name="receive_date" id="receive_date" style="width:75px" class="cdate" value="" {{attributes}}>
<script type="text/javascript">
    new LCalendar('receive_date');
</script>

新LCalendar(“接收日期”);

但是当我想添加
onchange=“\u do\u something()”
代替
{{attributes}
时,它不起作用。

文本输入是没有更改事件。可用于获取输入更改的事件是使用“input”。见样本

inputVar.addEventListener('input', function(){'what you want to do.'});

这太简单了,但您可以尝试以下方法:

var val;

document.getElementById('receive_date').addEventListener('focus', function() {
    // set the value
    val = this.value;
});

document.getElementById('receive_date').addEventListener('blur', function() {
    if (this.value !== val) {
        // val was changed
    } else {
        // val was not changed
    }
});
谢谢你的回答。 在测试了这么多解决方案后,我更改了日历库代码。 在代码中填写日期(文本)字段后:

receive_date_field.value=...;
我试着说:

a.focus();
a.blur();
两次,每次填充后(通过另一个javascript代码)捕获其值时,我使用:


代替
{{attributes}
!!!正如您所看到的,这不是我想要的,只是在每次填写后捕获字段值的一种临时方法。

检查datapicker API,看看它是否在用户选择日期时提供回调。亲爱的Barmar,我使用的是本地化的datepicker,在选择日期时不提供任何回调。另外请注意,日期选择器和文本字段的填写没有问题。当我想在更改此字段时捕获更改的值时,它不起作用…文本输入字段肯定有一个
change
事件。当你修改字段然后模糊掉它时,它就会被触发。W3C是这样的,但在某些平台上会出现问题。正如你所看到的。是的,巴尔马是。。。但是,如果使用javascript的另一个事件更改了它的值,我该怎么办呢?
change
input
等事件仅由用户操作触发。这就是为什么大多数小部件都提供自己的事件供您使用。如果你的日期选择器没有提供任何方法,我不知道解决方案。如果它是本地编写的日期选择器,您需要改进它。谢谢Barmar。我的本地化calendar.js代码是一个在许多项目中使用的通用类,我不能为特殊情况添加任何方法!
onfocus="_do_something();"