如何在更改文本框但未由用户更改时触发javascript事件?

时间:2017-08-24 08:56:14

标签: html text javascript-events anchor struts

我在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更改或从链接更改,就像我的情况一样)。

我该怎么做?

2 个答案:

答案 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>