页面
test.aspx
<body>
<form id="form1" runat="server">
<asp:TextBox ID="runTimeTxB" runat="server"></asp:TextBox>
<asp:TextBox ID="shutDownTimeTxB" runat="server"></asp:TextBox>
<!--根据前面2个TextBox框输入的值,自动计算停机率并赋值第三个TextBox-->
<asp:TextBox ID="shutdownRateTxB" runat="server" ></asp:TextBox>
</form>
</body>
类文件
test.cs
//加载页面
protected void Page_Load(object sender, EventArgs e)
{
runTimeTxB.Attributes.Add("onkeyup", "calcShutdownRate();");
runTimeTxB.Attributes["onkeyup"] = "calcShutdownRate();";
}
//计算停机率
private void calcShutdownRate()
{
Double x = Convert.ToDouble(runTimeTxB.Text == "" ? "0" : runTimeTxB.Text);
Double y = Convert.ToDouble(shutDownTimeTxB.Text == "" ? "0" : shutDownTimeTxB.Text);
Double result = 0;
if (x != 0 && y != 0)
result = Math.Round(y / (x + y) * 100, 2);
shutdownRateTxB.Text = result.ToString();
}我需要在页面前台实现TextBox间联动赋值,但是不想用JS,要通过onkeyup来调用类文件.cs中某函数,本来OnTextChanged可以实现,但是OnTextChanged反应不灵敏(需失去焦点才触发)。
所以请问该怎么实现?以上代码执行总报错——calcShutdownRate()未定义
请高手附可执行的详细代码,谢谢
test.aspx
<body>
<form id="form1" runat="server">
<asp:TextBox ID="runTimeTxB" runat="server"></asp:TextBox>
<asp:TextBox ID="shutDownTimeTxB" runat="server"></asp:TextBox>
<!--根据前面2个TextBox框输入的值,自动计算停机率并赋值第三个TextBox-->
<asp:TextBox ID="shutdownRateTxB" runat="server" ></asp:TextBox>
</form>
</body>
类文件
test.cs
//加载页面
protected void Page_Load(object sender, EventArgs e)
{
runTimeTxB.Attributes.Add("onkeyup", "calcShutdownRate();");
runTimeTxB.Attributes["onkeyup"] = "calcShutdownRate();";
}
//计算停机率
private void calcShutdownRate()
{
Double x = Convert.ToDouble(runTimeTxB.Text == "" ? "0" : runTimeTxB.Text);
Double y = Convert.ToDouble(shutDownTimeTxB.Text == "" ? "0" : shutDownTimeTxB.Text);
Double result = 0;
if (x != 0 && y != 0)
result = Math.Round(y / (x + y) * 100, 2);
shutdownRateTxB.Text = result.ToString();
}我需要在页面前台实现TextBox间联动赋值,但是不想用JS,要通过onkeyup来调用类文件.cs中某函数,本来OnTextChanged可以实现,但是OnTextChanged反应不灵敏(需失去焦点才触发)。
所以请问该怎么实现?以上代码执行总报错——calcShutdownRate()未定义
请高手附可执行的详细代码,谢谢
后依然不行
<div>
<asp:LinkButton ID="LinkButton1" Text="" runat="server" />
<asp:TextBox ID="shutdownRateTxB" runat="server" onkeyup='javascript:__doPostBack("shutdownRateTxB", "");' OnTextChanged="shutdownRateTxB_TextChanged1"></asp:TextBox>
</div>
</form> public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
} protected void shutdownRateTxB_TextChanged1(object sender, EventArgs e)
{
calcShutdownRate();
}
}
试试这个。。
这个试过了的,因为WEB的 OnTextChanged是需要文本框失去焦点后才出发,不是我要的实时联动功能哦。
试了一下,功能可以实现,就是每输入一个数字当前输入框会失去焦点。有改进,但仍不完全满足条件。只能写JS处理了...
能不能像JS中一样不失去焦点触发
添点代码巧妙解决了,就是手动让它再次自动聚焦
protected void shutDownTimeTxB_TextChanged(object sender, EventArgs e)
{
calcShutdownRate();
shutDownTimeTxB.Focus();
} <asp:TextBox ID="shutDownTimeTxB" runat="server"
onkeyup='javascript:__doPostBack("shutDownTimeTxB", "");'
ontextchanged="shutDownTimeTxB_TextChanged"
onfocus="cc()"></asp:TextBox> function cc() {
var e = event.srcElement;
var r = e.createTextRange();
r.moveStart("character", e.value.length);
r.collapse(true);
r.select();
}