0

私がやろうとしているのは、テキストボックスに割り当てられた文字数に基づいて、特定のボタンを有効または無効にすることです。

テキストボックスをクリックしたときにのみイベントが発生します。何か他のものを探しているのでしょうか?

<telerik:RadTextBox ID="InputVinInformationTextBox" runat="server"
    Skin="Office2010Blue"
    Width="250px"
    MaxLength="16"
    OnTextChanged="InputVinInformationTextBox_OnText"
    AutoPostBack="true">
</telerik:RadTextBox>

protected void InputVinInformationTextBox_OnText(object sender, EventArgs e)
{
    if (InputVinInformationTextBox.Text.Length >= 8)
    {
        VinSubmitButton.Enabled = true;
    }
    else
    {
        VinSubmitButton.Enabled = false;
    }
}
4

2 に答える 2

0

jQuery の使用を気にしない場合は、OnTextChanged関数を削除して、代わりに機能をkeyupイベントにバインドできます。<head>タグに次のコードを追加するだけです。

<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
    $(document).ready(function() {
        $("#<%=InputVinInformationTextBox.ClientID%>").keyup(function() {
            if (InputVinInformationTextBox.Text.Length >= 8)
            {
               VinSubmitButton.Enabled = true;    
            }
            else
            {
                VinSubmitButton.Enabled = false;
            }
        }
    });
</script>

あなたの VinSubmitButton が何であるかはわかりませんが、あなたの例では機能していたので、それはすでに保存されている要素であると思います。

于 2012-07-26T19:55:17.497 に答える
0

この動作は設計によるものです。

すべての RadInput コントロールは TextChanged サーバー イベントを提供します。これは、AutoPostBack プロパティが true に設定され、ユーザーが有効なエントリを入力し、入力がフォーカスを失ったときに発生します。

TextChanged イベントは、入力コントロールの値が実際に変更された場合にのみ発生します。ユーザーが入力コントロールの文字列を変更しても実際には値を変更しない場合、TextChanged イベントは発生しません。

詳細については、Telerik のサイトでこのヘルプ トピックを参照してください。

OnTextChangedの以前の値を変更する有効なテキストが入力された場合にのみ発生するため、これまでと同じようにイベントを使用することをお勧めしますRadTextBox

または、JavaScript を使用して適切な文字数が入力されたことを判断し、手動でリクエストをトリガーすることもできます。

<telerik:RadTextBox ID="InputVinInformationTextBox" runat="server"
    Skin="Office2010Blue"
    Width="250px"
    MaxLength="16"
    OnLoad="InputVinInformationTextBox_OnLoad">
    <ClientEvents OnKeyPress="InputVinInformationTextBox_OnKeyPress" />
</telerik:RadTextBox>


<script type="text/javascript">
    function InputVinInformationTextBox_OnKeyPress(sender, args) {
        var text = sender.get_value();
        if (text.length >= 8) {
            var ajaxManager = $find('<%= RadAjaxManager.GetCurrent(Page) %>');
            ajaxManager.ajaxRequestWithTarget(sender.get_id(), '');
        }
    }
</script>

上記のコードはRadAjaxManager、ページで も使用しており、 によってトリガーされたときにページのすべて/一部を更新するように構成されていることを前提としていますRadTextBox。コントロールのイベント中 (または後で) RadTextBox 値をチェックしてOnLoad、すべての ViewState とフォームの値がコントロールに対して初期化されるようにする必要があります。

protected void InputVinInformationTextBox_OnLoad(object sender, EventArgs e)
{
    if (InputVinInformationTextBox.Text.Length >= 8)
    {
        VinSubmitButton.Enabled = true;
    }
    else
    {
        VinSubmitButton.Enabled = false;
    }
}
于 2012-07-26T19:55:30.593 に答える