【发布时间】:2017-08-02 10:28:26
【问题描述】:
我有两个文本框并排的情况,在第一个文本框上,我(在服务器端代码中)添加如下处理程序(注意,我必须在服务器端执行此操作,因为文本框是动态创建的) :
tb.TextChanged += new EventHandler(TextBox_Changed);
// Thickness checker
if (ThicknessCheckColumn != "")
{
tb.Attributes.Add("onchange", "CheckThickness(this,\'" + ThicknessCheckColumn.Replace(" ", "").Replace("_", "").Replace("-", "").ToUpper() + "\')");
}
现在 TextBox_Changed 事件写入数据库,并根据 Textbox1 中的条目和一些数据库设置设置 Textbox2 的值...
private void TextBox_Changed(object sender, EventArgs e)
{
{lots of check and database access code here}
TextBox2.Text = Result
}
javascript 检查复选框 1 的值,并产生警告、错误等。
一切正常,除了警告是针对 Textbox2 的先前值的。
就好像服务器端事件中的代码在验证之后运行,或者实际文本框值在所有函数都得到解决之前不会改变。
这是有原因的吗?有没有更好的方法在服务器端事件完成后调用 javascript 验证?
Javascript函数如下:
function CheckThickness(textControl,checkcolumn) {
var id = textControl.id;
// Go get the check value
var checknumber = ""
$('form input[type="text"]').each(function () {
id.toString()
if (id == checkcolumn) {
checknumber = this.value;
}
})
// Do the compare
if (checknumber > 12)
{
alert("Proceed with caution!");
}
if (checknumber < lowerlimit) {
alert("LThis blade has not been coated with the recommended thickness,\nbut can still end up within the finished size tolerance.\n\nProceed with caution!");
}
}
更新 = 8 月 7 日....
因此,从这里开始,我是否可以在文本框“textbox_changed”事件上放置来调用服务器端事件,并从中获取状态,有条件地调用 javascript?这样我就可以在服务器端对实际的真实数据进行检查?
类似的东西(这里是伪代码)...
tb.TextChanged += new EventHandler('set retstatus = call TextBox_Changed; if retstatus = "Y" then call javascript_for_alert');
公共子字符串 TextBox_Changed(....) { ……呜呜呜…… 如果(我的条件 == 真) {返回“Y”}否则{返回“N”} }
否则,如何让 javascript 在当前值而不是旧值上运行???
【问题讨论】:
-
你能告诉我们javascript函数CheckThickness吗?
-
函数 CheckThickness(textControl,checkcolumn) { var id = textControl.id; // 去获取校验值 var checknumber = "" $('form input[type="text"]').each(function () { id.toString() if (id == checkcolumn) { checknumber = this. value; } }) // 进行比较 if (checknumber > 12) { alert("谨慎操作!"); } if (checknumber
-
注 - 原始问题已修改,附加后续问题 - 见上文
标签: javascript c# events server