文本框内容改变,onchange事件没有触发【高分求救,万分感谢】

悟空在此 2011-08-17 08:57:42
一个按钮,一个文本框,点击按钮,通过代码document.getElementById('text').value='hello',

使文本框的数值变为了hello。但是文本框的onchange="alert(123)"的事件并没有激发,

请问,怎样修改,才能使得通过代码document.getElementById('text').value='hello'的方式,能让文本框感觉到自己的
数值改变,从来激发某种事件呢?onchange好像不行。。。。

注:使文本框内容的改变不是通过键盘输入的,这样我知道可以用keyup来获取,就是想通过其它按钮静态改变此文本框数值的。

先给100分,不够在增加,万分感谢。

简单的代码如下:

<html>
<body>
<input type="text" onchange="alert(123)" id="text">
<input type="button" value="submit" onclick="document.getElementById('text').value='hello'">
</body>
</html>

...全文
5020 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
moosha 2011-08-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 knightzhuwei 的回复:]
HTML code
<html>
<body>
<input type="text" onpropertychange="alert(123)" id="text">
<input type="button" value="submit" onclick="document.getElementById('text').value='hello'">
</body>
</html>
……
MuBeiBei 2011-08-17
  • 打赏
  • 举报
回复
<input type="text" name="textfield" id="mytext" /> 
<script type="text/javascript">
function immediately(){
var element = document.getElementById("mytext");
if(document.all) {
element.onpropertychange = webChange;
}else{
element.addEventListener("input",webChange,false);
}

function webChange(){
if(element.value){alert(11)};
}
}

immediately()
</script>
hch126163 2011-08-17
  • 打赏
  • 举报
回复
onpropertychange FF 不支持! IE 没问题

其实事件调用的就是一个方法,自己调用一次就OK!

<html>
<body>
<input type="text" id="text">
<input type="button" value="submit" id='btn'>

<script>
var txtInput = document.getElementById('text');
var btn=document.getElementById('btn');
if(document.all){
txtInput.onpropertychange=fn;
}else{
txtInput.oninput=fn;
}
btn.onclick=function(){setValue('hello'); };
function setValue(v){
if(v==txtInput.value) return;
txtInput.value = v;
if(!document.all){fn();}
}
function fn(){
alert("changed");
}
</script>
</html>




MuBeiBei 2011-08-17
  • 打赏
  • 举报
回复
<input type="text" oninput="alert('aaa')" onpropertychange="alert('bb')"  />


ok~·
悟空在此 2011-08-17
  • 打赏
  • 举报
回复
谢谢高手指点,
IE用onpropertychange可以
但是FF用oninput不行啊,没反应。。。。。。
谢谢。

FF代码如下:

<html>
<body>
<input type="text" oninput="alert(123)" id="text">
<input type="button" value="submit" onclick="document.getElementById('text').value='hello'">
</body>
</html>
----大漠---- 2011-08-17
  • 打赏
  • 举报
回复
4楼正解
MuBeiBei 2011-08-17
  • 打赏
  • 举报
回复
onpropertychange
oninput

用这两个~·一个是IE的一个FF的~·
001007009 2011-08-17
  • 打赏
  • 举报
回复
onchange事件的顺序是 文本框获焦 --> 失焦 --> onchange

document.getElementById('text').value='hello' 这个没有让 id为test的文本获取焦点,所以test虽然value改变了,但是没有触发onchange
knightzhuwei 2011-08-17
  • 打赏
  • 举报
回复
<html>
<body>
<input type="text" onpropertychange="alert(123)" id="text">
<input type="button" value="submit" onclick="document.getElementById('text').value='hello'">
</body>
</html>
knightzhuwei 2011-08-17
  • 打赏
  • 举报
回复
onpropertychange
songzhiwei1984 2011-08-17
  • 打赏
  • 举报
回复
onchange事件是在文本框发生改变并且失去焦点的时候才触发的,你应该用 onfocus 获得焦点事件
因为赋值的话文本框肯定会得到焦点的
zhigangok 2011-08-17
  • 打赏
  • 举报
回复
var BrowserObj = new Object();
BrowserObj={
showValue:function (){
$id("text-size").innerHTML = $o("title-text").value;
},
Browser:function(){
if(/msie/i.test(navigator.userAgent)){
$id("title-text").onpropertychange=this.showValue;
}else{
$id("title-text").addEventListener("input",this.showValue,false)
}
}
}
BrowserObj.Browser()

onpropertychange onpropertychange能及时捕获属性值的变化,但是只支持IE,火狐并不支持,需要用addEventListener来注册事件
digli 2011-08-17
  • 打赏
  • 举报
回复
<table class="table_01" id="table_01">
<tr bgcolor="#99CC00">
<td bgcolor="#FEFEFE"> </td>
<td>科目</td>
<td>一月</td>
<td>二月</td>
<td>三月</td>
<td>四月</td>
<td>五月</td>
<td>六月</td>
<td>七月</td>
<td>八月</td>
<td>九月</td>
<td>十月</td>
<td>十一月</td>
<td>十二月</td>
<td>Total</td>
</tr>
<tr>
<td> 房租</td>
td><input type="text" value="${finance.rent[0]}" id="1FZ" size=2 style="border:0px;" /> </td>
<td><input type="text" value="${finance.rent[1]}" id="2FZ" size=2 style="border:0px;" /></td>
</tr>
<tr>
<td>物业管理费</td>
<td><input type="text" value="${finance.managementFee[0]}" id="1WY" size=2 style="border:0px;" /></td>
<td><input type="text" value="${finance.managementFee[1]}" id="2WY" size=2 style="border:0px;" /></td>
</tr>
<tr>
<td>其他办事处及公司宿舍租金</td>
<td><input type="text" value="${finance.otherOfficeAndCompanysRent[0]}" id="1ZJ" size=2 style="border:0px;" /></td>
<td><input type="text" value="${finance.otherOfficeAndCompanysRent[1]}" id="2ZJ" size=2 style="border:0px;" /></td>
</tr>
<tr>
<td>公司开会酒店食宿会务费用</td>
<td><input type="text" onblur="getAggregate(this)" id="1KH" size=2 style="border:0px;"/></td>
<td><input type="text" onblur="getAggregate(this)" id="2KH" size=2 style="border:0px;"/></td>
</tr>
<tr>
<td>员工福利费(社保补贴)</td>
<td><input type="text" onblur="getAggregate(this)" id="1SBBT" size=2 style="border:0px;"/></td>
<td><input type="text" onblur="getAggregate(this)" id="2SBBT" size=2 style="border:0px;"/></td>
</tr>
<tr>
<td>员工福利费(手机补贴)</td>
<td><input type="text" onblur="getAggregate(this)" id="1SJ" size=2 style="border:0px;"/></td>
<td><input type="text" onblur="getAggregate(this)" id="2SJ" size=2 style="border:0px;"/></td>
</tr>
<tr>
<td>员工福利费(住房补贴)</td>
<td><input type="text" onblur="getAggregate(this)" id="1ZF" size=2 style="border:0px;"/></td>
<td><input type="text" onblur="getAggregate(this)" id="2ZF" size=2 style="border:0px;"/></td>
</tr>

<tr>
<td>员工福利费(车贴)</td>
<td><input type="text" onblur="getAggregate(this)" id="1CT" size=2 style="border:0px;"/></td>
<td><input type="text" onblur="getAggregate(this)" id="2CT" size=2 style="border:0px;"/></td>
</tr>

<tr>
<td>员工活动费</td>

<td><input type="text" value="${finance.staffActivities[0]}" id="1HD" size=2 style="border:0px;"/></td>
<td><input type="text" value="${finance.staffActivities[1]}" id="2HD" size=2 style="border:0px;"/></td>
</tr>

<tr>
<td>员工学习及培训费</td>
<td><input type="text" value="${finance.learningAndTraining[0]}" id="1PX" size=2 style="border:0px;" /></td>
<td><input type="text" value="${finance.learningAndTraining[1]}" id="2PX" size=2 style="border:0px;" /></td>
</tr>
<tr>
<td>财务费用</td>
<td><input type="text" onblur="getAggregate(this)" id="1CW" size=2 style="border:0px;"/></td>
<td><input type="text" onblur="getAggregate(this)" id="2CW" size=2 style="border:0px;"/></td>
</tr>

<tr>
<td>工资</td>
<td><input type="text" onblur="getAggregate(this)" id="1GZ" size=2 style="border:0px;"/></td>
<td><input type="text" onblur="getAggregate(this)" id="2GZ" size=2 style="border:0px;"/></td>
</tr>

<tr>
<td>佣金</td>
<td><input type="text" onblur="getAggregate(this)" id="1YJ" size=2 style="border:0px;"/></td>
<td><input type="text" onblur="getAggregate(this)" id="2YJ" size=2 style="border:0px;"/></td>
</tr>
<tr>
<td>期间费用合计</td>
<td><input type="text" id="1HJ" readonly="readonly" size=3 style="border:0px;"/></td>
<td><input type="text" id="1HJ" readonly="readonly" size=3 style="border:0px;"/></td>
</tr>

房租 、物业管理费、 其他办事处及公司宿舍租金、 员工活动费、 员工学习及培训费这五项是从数据库查询出来的,
公司开会酒店食宿会务费用、员工福利费(社保补贴)、员工福利费(手机补贴)、员工福利费(住房补贴)、员工福利费(车贴)、财务费用、工资、佣金
这八项是手填的。期间费用合计是等于 从数据库查询出来的五项 加上 手填的八项。
用js怎么去写的实现方法。

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧