我在JSP集中有一个自定义标记STRUTS作为标准用于处理日历,我不能在这里设置任何类型的事件。
此标记呈现此HTML:<A onmouseover="return true" href="javascript:ShowCalendar('data')> (..img..) </A>**
当您在链接上选择日期时,这会更改我的文本框并选择日期,我需要在此时触发我的活动。
我的textbox struts标记是<html:text property="data" styleClass="testo10" size="12" maxlength="10" tabindex="3"/>
我尝试使用onchange事件,但只有在用户进行更改时才能正常工作。
无论用户是否更改了文本框,我都需要触发事件(例如,从javascript更改或从链接更改,就像我的情况一样)。
我该怎么做?
答案 0 :(得分:0)
在javascript中绑定更改事件
document.getElementById('txtbox_id').addEventListener('change', function() {
alert("text changed"); //or do whatever u want here
});
答案 1 :(得分:0)
这可以通过'input'事件来实现。
<input type="text" class="txtTest" value="test" onchange="textChange();" oninput="this.onchange();"/>
在这里,我使用jQuery触发'input'事件,使用setTimeout()来动态模拟文本更改。
function textChange(){
alert('text change');
}
setTimeout(function(){
$('.txtTest').val('new text').trigger("input");
},2000);
JS Bin链接here
jQuery的基本.trigger()
方法有助于触发您要触发的事件。在这种情况下,我正在触发文本框的“输入”事件,而后者则调用它自己的onchange()
方法。或者简单,您也可以直接触发change
事件。
支持IE7 jQuery 1.x + textchange plugin有助于实现这一目标。
我尝试使用IE7 Emulation。
<input type="text" id="txtTest" value="test"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="http://zurb.com/playground/uploads/upload/upload/5/jquery.textchange.min.js"></script>
<script type="text/javascript">
$('#txtTest').bind('textchange', function (event, previousText) {
alert(previousText);
});
setTimeout(function(){
$('#txtTest').val('new text').trigger('textchange','some data');
},3000)
</script>