0

テキストボックス イベントを宣言しましたが、発生しません。私はSO他の回答を見てきましたが、それらはすべて自動ポストバックプロパティが真であり、私はそれを持っていると言っています

私のaspx

<asp:ScriptManager ID="ScriptManager2" runat="server" />    
            <asp:TextBox runat="server" ID="txtDia" Width="120px" Height="20px" 
                AutoPostBack="True" CssClass="textbox" OnTextChanged="txtDia_TextChanged"/>
            <Juice:Datepicker ID="Datepicker2" runat="server" TargetControlID="txtDia" 
                DateFormat="dd/mm/yy" 
                MonthNames="Enero,Febrero,Marzo,Abril,Mayo,Junio,Julio,Agosto,Septiembre,Octubre,Noviembre,Diciembre" 
                MonthNamesShort="Ene,Feb,Mar,Abr,May,Jun,Jul,Ago,Sep,Oct,Nov,Dic," 
                AutoPostBack="True" /></td>

そして私のaspx.vb

Protected Sub txtDia_TextChanged(sender As Object, e As System.EventArgs) Handles         txtDia.TextChanged
        CargarDatos()
End Sub
4

5 に答える 5

3

次のようにテキストボックスを定義する必要があります(OnTextChanged="txtDia_TextChanged"追加を参照):

<asp:TextBox OnTextChanged="txtDia_TextChanged" 
              runat="server" ID="txtDia" Width="120px" Height="20px" 
              AutoPostBack="True" CssClass="textbox"/>

そして、このイベントは onblur (そのテキスト ボックスからフォーカスが取り除かれたとき) のみ発生することに注意してください。

于 2013-06-06T09:09:39.663 に答える
1

ファンゲルの言ったことは正しい。

日付を検証してjquery datepickerを使用するときに同じ問題が発生しました。ボックスにデータが入力された後、以下を使用して検証ルーチンを起動しました。したがって、技術的には、テキストボックスが日付ピッカーにフォーカスを失った後に2回発生し、次に、日付ピッカーがテキストボックスにデータを入力した後にコードが発生したときに2回発生しました。onblur イベントを無効にして、下から直接呼び出すとよかったのですが、私のプロジェクトではできませんでした。

$('.datePicker').each(function () {
     $(this).datepicker({
          onSelect: function () {
                $(this).trigger('blur');
          }
     });
});

自動ポストバックを無効にし、onSelect イベントを介して手動でトリガーすることで、これのバリエーションを使用できます。

于 2013-06-06T11:33:52.797 に答える
1

コードビハインドでテキストを上書きすると、イベントはトリガーされません。たとえば、コントロールが置かれている場所にデータバインドするとしTextBoxます。

あなたはそうする必要がありますIf Not IsPostBack

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostback)
    {
        DataBindAllControls(); // including your textbox
    }
}

編集:申し訳ありませんが、ここでVB.NET:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not IsPostBack Then
        DataBindAllControls() ' including your textbox
    Else
End Sub
于 2013-06-06T09:09:08.460 に答える