日期:2014-05-18  浏览次数:20537 次

一个关于textbox的OnBlur和OnChange--js
小弟遇到如下问题:
小弟用了一段JavaScript制作了一个日期下拉选择的控件
(一个textbox用来获得日历div内的选择的值,一个按钮,点了之后出现装有日历js的div)
<input   type= "text "   id= "xzrq "   name= "xzrq "   runat= "server "   size= "26 "   maxlength= "19 ">  
<input   type= "button "   name= "change "   value= ".. "   onclick= "show_date(change, ' ', ' ',xzrq) ">
小弟想实现的是:
当点击客户端按钮change,然后选择了日期,此时需要日期计算一些值(通过选择日期变更来得到的值)。
但是小弟发现,当小弟选择了div内日历内的值后,值传递到xzrq控件内,
值改变了,却没发生xzrq控件的“onChange”事件,
小弟又手工改了xzrq控件内的日期值,这时是可以触发“onChange”事件。
如果用onBlur事件是能成功触发的(但是不合适用,因为他是在焦点离开后才得到不是当前的选择日期的值,而是本次的上一次的值)。
----------------------
现在文本框id= "xzrq "   name= "xzrq "   不能成功触发onChange事件,onBlur事件也不能用,请教各位,应该怎么处理~~~
如果觉得小弟描述不清楚的,请指出,小弟重新描述,谢谢~~~


------解决方案--------------------
只是用脚本给input text赋值不会触发onchange事件
如果一定要触发在赋值语句后加-
document.getElementById( 'xzrq ').onchange()
------解决方案--------------------
xzrq.Attributes.Add( "onChange ", "bb(); ")
==>
xzrq.Attributes.Add( "onchange ", "javascript:bb(); ")
||
xzrq.Attributes.Add( "onperprotychange ", "javascript:bb(); ")
------解决方案--------------------
换成onpropertychange 应该就OK了~
------解决方案--------------------
你先把其他的去了,留下面的试试
埃,还得去猜你到底要干什么,真累

<input onfocus= "setDay(this) " name= "xzrq " type= "text " value= "2007-09-25 " id= "xzrq " onchange= "bb(); " />

<script type= "text/javascript ">
function setDay(obj)
{
obj.value = "2007-19-25 ";
obj.onchange();
}

function bb()
{
document.all.Label11.innerText = document.getElementById( 'xzrq ').value;
}

</script>
------解决方案--------------------
输入框onChange事件也是要在焦点离开输入框的焦点后才能引发,onperprotychange更加不行。

所以用JS给输入框赋值不会引发onperprotychange和onchange事件。

如果你的xzrq是服务器端控件,就这样引发它的onchange事件:

obj = document.getElementById( " <%=xzrq.ClintID> ");

obj.onchange.call(obj);
------解决方案--------------------
如果我用键盘直接输入,那是能触发onChange的事件的。
-----------------------------
哦,为什么我这样用键盘也不能触发事件了?

<input type= "text " id= "txt1 " onchange= "alert( 'change '); " />