关于textBox的textChange事件的问题!<高分求解,来者有分!!!!!>

我本来就叫顾影 2003-03-14 09:51:53
在页面上有三个文本框,要求实现当第一文本框输入一个数,则第三个文本框中的数据自动的由第一个文本框和第二个文本框相乘得到,即
text3.text=text1.text*text2.text

而当在第二个文本框中输入数据时,则第三个文本框中自动的由第一个和第二个文本框相乘得到!
注:
要求像在WINDOWS编程中的keypress或textchanged事件一样发生!而不是通过任何除这个三个文本以外的任何控制件!
我的做法是在第一个TEXT和第二个TEXT的textchanged事件写代码进行计算,并且将他们的autopostback设为了true,可还是不行!


各位高手,你们遇到这样的问题是如何解决的,这样的问题在开发基于BS结构的应用时会经常遇到啊!!!望贴出相关源代码!!!!
如果实在用ASP.NET实现不了,有没有第三方控件可以实现?
谢谢!!!
...全文
317 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
perhaps 2003-03-15
  • 打赏
  • 举报
回复
<script language=vbscript>
sub text1_onkeyup
;<数据合法性校验写在这里>
text.value=text2.value*text3.value
;
end sub
</script>
但很怪,这段服务端总是报找不到text1的value属性的错误!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~这是客户端的代码啊,服务器端当然找不到了~
  • 打赏
  • 举报
回复
首先还是谢谢各位!
不管怎么样,我的一个贴子有这么多人来答1
好高兴!
sumanden(心头慌,打中张) :
首先还是谢谢你!
其次,我也知道asp是服务端代码,在服务端被运行,结果返回客户端,我也试了在我的.net页面里用
<script language=vbscript>
sub text1_onkeyup
;<数据合法性校验写在这里>
text.value=text2.value*text3.value
;
end sub
</script>
但很怪,这段服务端总是报找不到text1的value属性的错误!
我于是很芒然了!
所以昨天发了以上的贴子!
我是今天晚上才看到有热心的网友已经给出了javascript的代码·不胜感激!一定给分!
可是今天早上,一丝灵感帮我解决了问题,这个方法跟各位的方式都不一样!
代码如下:
<SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript> //关键1在这里
Sub TextBox1_onkeyup
dim a
dim b
dim c
a=Form1.TextBox1.value //关键2在这里
b=Form1.textBox2.value
if Form1.TextBox1.value="" then a=0
if Form1.TextBox2.value="" then b=0
c=a*b
Form1.TextBox3.value=cstr(c)'cstr(clng(text1.value)*clng(text2.value))


End Sub
Sub TextBox2_onkeyup
dim a
dim b
dim c
a=Form1.TextBox1.value
b=Form1.textBox2.value
if Form1.TextBox1.value="" then a=0
if Form1.TextBox2.value="" then b=0
c=a*b
Form1.TextBox3.value=cstr(c)'cstr(clng(text1.value)*clng(text2.value))
End Sub
</SCRIPT>

把这段代码写到aspx文件的html代码里,就可以解决问题!
至于为什么要写成
<SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>
而不是我们常用的
<script language=vbscript>
我现在也不知道?
望各位指教!!!!!


tigerwuasp 2003-03-14
  • 打赏
  • 举报
回复
function checkNumeral(thisTag){
if (thisTag.value!=""){
if (isNaN(parseFloat(thisTag.value))){
alert("错误数字,请重新填写!");
thisTag.focus();
return false;
}else if((parseFloat(thisTag.value))!=thisTag.value){
alert("错误数字,请重新填写!");
thisTag.focus();
return false;
}
}
return true;
}

function checkNumber_zhg(mValue){

if (mValue!=""){
if (isNaN(parseFloat(mValue))){
alert("数字中不能包含字符!");
return false;
}else if((parseFloat(mValue))!=mValue){
alert("数字中不能包含字符!");
return false;
}
}
return true;

}
「已注销」 2003-03-14
  • 打赏
  • 举报
回复
>> martix(矩阵):其实我还是想用asp.net来写,哪位大侠试一下啊!

不知你的意思是否是要用VB.NET或C#来实现,如果是的话,那么看来你还没有理解ASP.NET,TextBox改变时进行值的变化,这本来就是客户端的行为,你不应该发回到服务器端处理。
「已注销」 2003-03-14
  • 打赏
  • 举报
回复
在HTML中加入脚本
function Chg()
{

if (isNaN(document.all.TextBox1.value))
{
alert('这里只能输入数字!');
document.all.TextBox1.value="";
return false;
}
if (isNaN(document.all.TextBox2.value))
{
alert('这里只能输入数字!');
document.all.TextBox2.value="";
return false;
}
document.all.TextBox3.value=document.all.TextBox1.value*document.all.TextBox2.value ;

}
在Page_Load事件中
TextBox1.Attributes["onkeyup"]="Chg();";
TextBox2.Attributes["onkeyup"]="Chg();";
shuncy 2003-03-14
  • 打赏
  • 举报
回复
帮你写了一个检测函数,应该对你有帮助:
<html>
<head>
<title>New Page 1</title>
<script language="javascript">
function CheckNum(Item)
{
if (event.keyCode == 190 || (event.keyCode > 47 && event.keyCode < 58))
{
return true;
}
else
{
Item.value = Item.value.substring(0,Item.value.length-1);
return false;
}
}

function ItemClick(Item)
{
if(CheckNum(Item) && document.all("T1").value != "" && document.all("T2").value != "")
{
document.all("T3").value = document.all("T1").value * document.all("T2").value;
}
}
</script>
</head>
<body>
<form method="POST" action="--WEBBOT-SELF--">
<p>文本框一:<input type="text" name="T1" onkeyup="ItemClick(this)" size="20"></p>
<p>文本框二:<input type="text" name="T2" onkeyup="ItemClick(this)" size="20"></p>
<p>文本框三:<input type="text" name="T3" size="20"></p>
</form>
</body>

</html>
  • 打赏
  • 举报
回复
up
  • 打赏
  • 举报
回复
gangganghao(ganggang):
我的vbscript代码;但有错误!帮我看看!
<SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>
<!--
Sub text1_onkeyup
msgbox(text1.value )
if ((not isnull(text1.value) and text1.value<>"") and ((not isnull(text2.value) and text2.value<>"") then
text3.value=clng(text1.value)*clng(text2.value)
end if
End Sub

-->
</SCRIPT>

其实我还是想用asp.net来写,哪位大侠试一下啊!
lzs7710 2003-03-14
  • 打赏
  • 举报
回复
sorry
我想你可以动态控制你得相乘个数和Enabled及autopostback来实现的!!!
应该可以的
lzs7710 2003-03-14
  • 打赏
  • 举报
回复
我想你可以动态控制你得相乘个数和Enabled及AutoIsPack来实现的!!!
应该可以的
「已注销」 2003-03-14
  • 打赏
  • 举报
回复
解决方案还是极力推荐使用js,不要发送到服务端进行处理。
gangganghao 2003-03-14
  • 打赏
  • 举报
回复
text3.value=text1.value*text2.value

你先判断一下前两个值不为空。。在相乘。。

If text1.value<>"" and text2.value<>"" then。。
「已注销」 2003-03-14
  • 打赏
  • 举报
回复
我的垃圾代码多了一大串:)
对,还需要对其进行验证,只能输入数字
  • 打赏
  • 举报
回复
-------------------------------------
刚才试了一下楼上贴的代码!
首先还是很感谢你的发言,但是,他不是我想要的!
你的代码和我的先前的思路一样,
你的代码仅仅实现当TEXT1失去焦点时进行计算乘积并赋给TEXT3,但我是想让在TEXT1中输的时候进行计算,边输入,边计算!

望继续关注!!!!!
buer 2003-03-14
  • 打赏
  • 举报
回复
可以简单是实现当输入A,B后在B产生事件 生成C的Text;
需要做简单的控制;确保A,B不为空And为数值;;结果转换为string 回写到C.Text中;
「已注销」 2003-03-14
  • 打赏
  • 举报
回复
使用onkeyup
<body MS_POSITIONING="GridLayout">
<script language="javascript">
function chen()
{
WebForm3.TextBox3.value=WebForm3.TextBox1.value*WebForm3.TextBox2.value ;
}
</script>
<form id="WebForm3" method="post" runat="server">
  
<asp:TextBox id="TextBox1" style="Z-INDEX: 101; LEFT: 289px; POSITION: absolute; TOP: 96px" runat="server"></asp:TextBox>
<asp:TextBox id="TextBox2" style="Z-INDEX: 102; LEFT: 274px; POSITION: absolute; TOP: 161px" runat="server"></asp:TextBox>
<asp:TextBox id="TextBox3" style="Z-INDEX: 103; LEFT: 269px; POSITION: absolute; TOP: 213px" runat="server"></asp:TextBox>
<INPUT style="Z-INDEX: 104; LEFT: 271px; POSITION: absolute; TOP: 268px" type="text" >
</form>
</body>
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
TextBox1.Attributes["onkeyup"]="chen();";
TextBox2.Attributes["onkeyup"]="chen();";
//TextBox2.Attributes["onkeyup"]="chen();";
}
James880 2003-03-14
  • 打赏
  • 举报
回复
首先应该对text1,text2验证是否为数字,然后同意 martix(矩阵)说的
chinchy 2003-03-14
  • 打赏
  • 举报
回复
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace NW
{
/// <summary>
/// WebForm7 的摘要说明。
/// </summary>
public class WebForm7 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox TextBox1;
protected System.Web.UI.WebControls.TextBox TextBox2;
protected System.Web.UI.WebControls.TextBox TextBox3;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
}

#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.TextBox1.TextChanged += new System.EventHandler(this.TextBox1_TextChanged);
this.TextBox2.TextChanged += new System.EventHandler(this.TextBox2_TextChanged);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void TextBox1_TextChanged(object sender, System.EventArgs e)
{
this.TextBox3.Text=(int.Parse(this.TextBox1.Text)*int.Parse(this.TextBox2.Text)).ToString();
}

private void TextBox2_TextChanged(object sender, System.EventArgs e)
{
this.TextBox1_TextChanged(sender,e);
}
}
}
====================================
<%@ Page language="c#" Codebehind="WebForm7.aspx.cs" AutoEventWireup="false" Inherits="NW.WebForm7" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm7</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="WebForm7" method="post" runat="server">
<asp:TextBox id="TextBox1" style="Z-INDEX: 101; LEFT: 243px; POSITION: absolute; TOP: 93px" runat="server" AutoPostBack="True">0</asp:TextBox>
<asp:TextBox id="TextBox2" style="Z-INDEX: 102; LEFT: 247px; POSITION: absolute; TOP: 160px" runat="server" AutoPostBack="True">0</asp:TextBox>
<asp:TextBox id="TextBox3" style="Z-INDEX: 103; LEFT: 247px; POSITION: absolute; TOP: 217px" runat="server">0</asp:TextBox>
</form>
</body>
</HTML>
  • 打赏
  • 举报
回复
up
  • 打赏
  • 举报
回复
用javascript也好
用vbscript也好,请给出源代码?
我用vbscript里写了如下代码:
<scripte language=vbscript>
sub text1_onkeypress
text3.value=text1.value*text2.value
end sub
</script>
这样做是可以,但是当我在text1用退格键删除掉输入的数据时,就会出“网页中存在错误,”的提示,然后,上面这段程序就没有工作了,非要我重新刷新页面才行!

加载更多回复(2)






               
TextBox runat="server" id="txt" width="600px">
Text="确认" />

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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