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"このテキストボックスの値の変更に基づいて、その場で計算を行う必要があるため、実行できません。

そうした場合、ページはポストバックせず、エラーメッセージは永久に残りますが、このイベントがtextchcangeで呼び出されることはないためAutopostback="false"、""イベントの計算を行うことはできません。txtAmount_TextChangedAutopostback="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

クライアント側のイベントハンドラーを追加し、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 に答える
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 に答える