2

我有以下文本框控件;

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

在这里,如果文本框中有任何值变化,txtAmount_TextChanged将被调用,因为AutoPostBack="true"在控件中有。

因此,如果我们在文本框中输入一个非数值,则使用 Jquery 的属性 Class 会触发验证错误,但是这个从文本框中弹出为红色框的错误不会停留超过 3 秒,它会在页面发布时消失在 3 秒内返回,这个帖子正在发生只是因为有一个AutopostBack="true".

我不能这样做Autopostback="false",因为我需要根据这个文本框值的变化当场做一些计算。

如果这样做Autopostback="false",页面将不会发回并且错误消息永远保留,但我无法对“ txtAmount_TextChanged”事件进行任何计算,因为如果.textchcange 永远不会调用此事件Autopostback="false"

那么,如果此文本框中有任何验证错误,我该怎么做才能防止此回发?

4

4 回答 4

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

}
于 2012-08-13T09:31:44.803 回答
1

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

jQuery('#txtAmount').live('input', function() 
   {
     // do your Validation 
     // If Valid return True
     // If Invalid Return False
   }
) 
于 2012-08-13T09:46:41.507 回答
1

您可以使用jquery更改功能

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


您也可以使用 keychange 事件

 $('#txtbox').keyup(function() { 
       if(validationfail){return false;} 
    });
于 2012-08-13T09:47:00.123 回答
1

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

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

JavaScript:

function doMyCheck() {
  if (// call your jQuery validity check) 
    return false;
}
于 2012-08-13T09:35:23.677 回答