C# 如果验证错误,请停止回发

C# 如果验证错误,请停止回发,c#,javascript,jquery,.net,validation,C#,Javascript,Jquery,.net,Validation,我有下面的文本框控件 <asp:TextBox ID="txtAmount" runat="server" AutoPostBack="true" Width="85px" class="validate[ERExpenseTypeDaterequired,custom[float]]" OnTextChanged="txtAmount_TextChanged" ></asp:TextBox>

我有下面的文本框控件

   <asp:TextBox ID="txtAmount" runat="server" AutoPostBack="true" Width="85px" class="validate[ERExpenseTypeDaterequired,custom[float]]"
                                OnTextChanged="txtAmount_TextChanged"   ></asp:TextBox>

这里,如果文本框中有任何值更改,将调用
txtmount\u TextChanged
,因为控件中有
AutoPostBack=“true”

因此,如果我们在文本框中放入一个非数字值,使用Jquery会从属性类中触发验证错误,但是这个错误(从文本框中弹出一个红色框)不会停留超过3秒钟,当页面在3秒钟内发回时,它消失了,这个发回只是因为出现了
AutopostBack=“true”

我无法执行
Autopostback=“false”
,因为我需要根据此文本框值的变化当场进行一些计算

如果我执行了
Autopostback=“false”
,页面将不会回发,错误消息将永远保留,但我无法对“
txtmount\u TextChanged
”事件进行任何计算,因为如果
Autopostback=“false”
,将永远不会对textcange调用此事件


那么,如果此文本框中存在任何验证错误,我该如何防止此回发?

您需要添加客户端事件处理程序,并在不希望发生回发时从中返回false

function txtAmount_TextChanged(){
    //do validations here, Eg: validate if txtAmount is valid amount and "> 0"
   return false; //if somethings's wrong, else true

}
<asp:TextBox onkeydown="return doMyCheck()" ID="txtAmount" runat="server"
  AutoPostBack="true" Width="85px" class="validate[ERExpenseTypeDaterequired,custom[float]]"
  OnTextChanged="txtAmount_TextChanged"></asp:TextBox>

使用
Input
事件使用jquery检查文本框中添加的文本

jQuery('#txtAmount').live('input', function() 
   {
     // do your Validation 
     // If Valid return True
     // If Invalid Return False
   }
) 

您可以使用jquerychange函数

$('#txtbox').change(function() { if(validationfail){return false;} );

您也可以使用keychange事件

 $('#txtbox').keyup(function() { 
       if(validationfail){return false;} 
    });

使用
java脚本
对textbox进行计算您的问题类似于下面的问题[1]:不,我的案例中没有必需的字段验证器krunal。。我们可以用最少的优先级来做…如果没有其他的事情,请看Naveen的答案。。。基本上为文本框添加CausesValidation=“true”,在这里有更好的解释。我需要在哪里放置/调用上述函数?HTML还是代码隐藏?@PeteEngineer:在aspx页面的相关
脚本
标记或链接的js文件
中。txtAmount\u TextChanged是我在codebehind中编写的服务器端函数。。。你是说我需要用相同的名字写一个客户端函数吗?@Pete工程师:是的,需要一些客户端函数。选择任何你喜欢的名字。哎呀,你没看到。。。我只是在您的答案中更新了,现在它不可见Microsoft JScript运行时错误:需要对象。。。这是错误,这来自以下行:onchange=“javascript:setTimeout”(“ctl00$Placeholder Main$SPWebPartManager$g\U 812dd644\U c15e\U 4f29\U b484\U 62dee31b34ee$ctl00$ReportExpenseControl$GDVRReportExpense$ctl02$TXTMount\,”0)“您是否向javascript添加了
函数doMyCheck()
(即
标签之间?
 $('#txtbox').keyup(function() { 
       if(validationfail){return false;} 
    });