在jsp中实现触发现象。(急)

快跑蜗牛哥 2009-11-04 01:17:54
在一个a文本框中输入某个数字
另一个b文本框中对应的出现一个数字
(这个数字是a中的数字乘以一个变量)

即要求在宜文本框中输入内容,另一文本框的值随之变化!
...全文
152 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
鲜为人知 2009-11-05
  • 打赏
  • 举报
回复
就是这样的,一个事件
guodong66 2009-11-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 guodong66 的回复:]
onpropertychange事件,文本改变时出发。
[/Quote]

还是感觉应该使用这个事件,因为这个事件的设计就是文本被修改时触发。
jinxinsky 2009-11-05
  • 打赏
  • 举报
回复
楼上的,当我用鼠标复制粘贴一串值,你的程式就不会被激发
夜雨~听风 2009-11-05
  • 打赏
  • 举报
回复
又来晚了,问题又被解决了。。。。text的属性有很多可以起到及时的效果的
goosman 2009-11-05
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 qw0907 的回复:]
TKS 各位的回覆!
HTML code<html><head><title>测试</title><scripttype="text/javascript">function change(thisElement) {var value= thisElement.value;var targetElementb= document.getElementById('mcc2price');var targetElementc= document.getElementById('mcc1price');var targetElementd= document.getElementById('factoryprice');if(targetElementb.value!= value) {var numberValue=new Number(value);var tmp= document.getElementById('mcc1').value;var result= tmp* numberValue;
targetElementb.value= result;
}if(targetElementc.value!= value) {var numberValue=new Number(value);var tmp= document.getElementById('mcc2').value;var result= tmp* numberValue;
targetElementc.value= result;
}if(targetElementd.value!= value) {var numberValue=new Number(value);var tmp= document.getElementById('fact').value;var result= tmp* numberValue;
targetElementd.value= result;
}
}</script></head><body><inputtype="text" name="a" id="a" dir="rtl" onkeyup="change(this);" onkeypress="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value" onkeyup="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value" onblur="if(!this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?|\.\d*?)?$/))this.value=this.o_value;else{if(this.value.match(/^\.\d+$/))this.value=0+this.value;if(this.value.match(/^\.$/))this.value=0;this.o_value=this.value}if(this.value==''||this.value=='0'){this.value='0';this.style.color='gray';} " style="color:gray" value="0" onfocus="if(this.value=='0'){this.value=''};this.style.color='black';"/><inputtype="text" name="mcc2price" id="mcc2price" dir="rtl"/><inputtype="text" name="mcc1price" id="mcc1price" dir="rtl"/><inputtype="text" name="factoryprice" id="factoryprice" dir="rtl"/><inputtype="hidden" value="0.6" id="mcc1" name="mcc1"><inputtype="hidden" value="0.7" id="mcc2" name="mcc2"><inputtype="hidden" value="0.52" id="fact" name="fact"></body></html>
但当输入的内容是某些带小数点的数字时,
其他文本框中得到的内容有很多小数点,
请问这个有没有好方法解决!

[/Quote]

小数点用正则去做吧... 你说的有很多小数点我不懂什么意思.
阿士匹灵 2009-11-05
  • 打赏
  • 举报
回复
路过
帮顶
97095639 2009-11-05
  • 打赏
  • 举报
回复
onpropertychange 事件 js 问题
快跑蜗牛哥 2009-11-05
  • 打赏
  • 举报
回复
TKS 各位的回覆!

<html>
<head>
<title>测试</title>
<script type="text/javascript">
function change(thisElement) {
var value = thisElement.value;
var targetElementb = document.getElementById('mcc2price');
var targetElementc = document.getElementById('mcc1price');
var targetElementd = document.getElementById('factoryprice');
if(targetElementb.value != value) {
var numberValue = new Number(value);
var tmp = document.getElementById('mcc1').value;
var result = tmp * numberValue;
targetElementb.value = result;
}
if(targetElementc.value != value) {
var numberValue = new Number(value);
var tmp = document.getElementById('mcc2').value;
var result = tmp * numberValue;
targetElementc.value = result;
}
if(targetElementd.value != value) {
var numberValue = new Number(value);
var tmp = document.getElementById('fact').value;
var result = tmp * numberValue;
targetElementd.value = result;
}
}
</script>
</head>
<body>
<input type="text" name="a" id="a" dir="rtl" onkeyup="change(this);" onkeypress="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value" onkeyup="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value" onblur="if(!this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?|\.\d*?)?$/))this.value=this.o_value;else{if(this.value.match(/^\.\d+$/))this.value=0+this.value;if(this.value.match(/^\.$/))this.value=0;this.o_value=this.value}if(this.value==''||this.value=='0'){this.value='0';this.style.color='gray';} " style="color:gray" value="0" onfocus="if(this.value=='0'){this.value=''};this.style.color='black';"/>
<input type="text" name="mcc2price" id="mcc2price" dir="rtl" />
<input type="text" name="mcc1price" id="mcc1price" dir="rtl"/>
<input type="text" name="factoryprice" id="factoryprice" dir="rtl"/>

<input type="hidden" value="0.6" id="mcc1" name="mcc1">
<input type="hidden" value="0.7" id="mcc2" name="mcc2">
<input type="hidden" value="0.52" id="fact" name="fact">
</body>
</html>

但当输入的内容是某些带小数点的数字时,
其他文本框中得到的内容有很多小数点,
请问这个有没有好方法解决!
realcbb 2009-11-05
  • 打赏
  • 举报
回复
onkeypress即可
goosman 2009-11-04
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 dhdhdh0920 的回复:]
引用 14 楼 lgg201 的回复:
引用 7 楼 warison2008 的回复:
<input>的onkeypress,onblure,onchange都可以实现


onblur, onchange不能解决问题, 要求的是内容联动, 这两个都需要对象失去焦点之后才能触发.


两个失去焦点那你写个按钮不就完了,用blur()让他们失去焦点不就完了
[/Quote]

问题在于要实现的是输入框中内容改变, 比如你输入123, 那么输入1的时候要变, 输入2的时候要变, 输入3的时候也要变, 而不是失去焦点触发.
宏奕0920 2009-11-04
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 lgg201 的回复:]
引用 7 楼 warison2008 的回复:
<input>的onkeypress,onblure,onchange都可以实现


onblur, onchange不能解决问题, 要求的是内容联动, 这两个都需要对象失去焦点之后才能触发.
[/Quote]

两个失去焦点那你写个按钮不就完了,用blur()让他们失去焦点不就完了
goosman 2009-11-04
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 guodong66 的回复:]
引用 4 楼 lgg201 的回复:
HTML code <html> <head> <title>测试 </title> <scripttype="text/javascript">function change(thisElement) {var value= thisElement.value;var targetElement= document.getElementById('b');if(!value.match(/^-?\d+$/)) {
                    thisElement.value= value.substr(0, value.length-1);return ;
                }if(value.match(/^\s*$/)) {
                    targetElement.value="";return ;
                }if(targetElement.value!= value) {var numberValue=new Number(value);var tmp=30;var result= tmp* numberValue;
                    targetElement.value= result;
                }
            } </script> </head> <body> <inputtype="text" name="a" id="a" onkeyup="change(this);"/> <inputtype="text" name="b" id="b"/> </body> </html>


这个是键盘按下的事件,请问输入中文的时候怎么办??? 一个中文是多个字母的。。
[/Quote]

没有中文问题, 是键盘抬起的事件, 判断a和b的内容是否一样再处理的

另外, 楼主要求值和一个数值运算, 所以, 上面的代码那个a输入框只接受整数.
宏奕0920 2009-11-04
  • 打赏
  • 举报
回复
不错啊,高手云集啊
guodong66 2009-11-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lgg201 的回复:]
HTML code<html><head><title>测试</title><scripttype="text/javascript">function change(thisElement) {var value= thisElement.value;var targetElement= document.getElementById('b');if(!value.match(/^-?\d+$/)) {
thisElement.value= value.substr(0, value.length-1);return ;
}if(value.match(/^\s*$/)) {
targetElement.value="";return ;
}if(targetElement.value!= value) {var numberValue=new Number(value);var tmp=30;var result= tmp* numberValue;
targetElement.value= result;
}
}</script></head><body><inputtype="text" name="a" id="a" onkeyup="change(this);"/><inputtype="text" name="b" id="b"/></body></html>
[/Quote]

这个是键盘按下的事件,请问输入中文的时候怎么办??? 一个中文是多个字母的。。
lzh_me 2009-11-04
  • 打赏
  • 举报
回复
4楼的...
goosman 2009-11-04
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 dengxian 的回复:]
onkeypress方法
[/Quote]

onkeypress事件触发的时候, 你输入的这个字符还没有追加到input对象的value后面, 所以也不可以.
goosman 2009-11-04
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 warison2008 的回复:]
<input>的onkeypress,onblure,onchange都可以实现
[/Quote]

onblur, onchange不能解决问题, 要求的是内容联动, 这两个都需要对象失去焦点之后才能触发.
紫炎圣骑 2009-11-04
  • 打赏
  • 举报
回复
4楼正解!
dengxian 2009-11-04
  • 打赏
  • 举报
回复
onkeypress方法
jyjyjy85711 2009-11-04
  • 打赏
  • 举报
回复
onkeypress,onblure,onchange都应该可以实现,关键是JS方法
加载更多回复(10)

81,092

社区成员

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

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