この動作は設計によるものです。
すべての 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;
}
}