我要做的是根据已经插入文本框的字符数启用或禁用特定按钮。
当我点击文本框时,事件才会触发,也许我正在寻找别的东西?
<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;
}
}
答案 0 :(得分: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是什么,但我认为,因为它在你的例子中工作,那是你已经存储的元素。
答案 1 :(得分:0)
此行为是设计使然:
所有RadInput控件都提供TextChanged服务器事件,即 当AutoPostBack属性设置为true时,用户输入 有效输入,输入失去焦点。
只有输入控件的值才会出现TextChanged事件 实际上是变化如果用户更改输入控件中的字符串 但实际上并没有改变值... TextChanged事件 没有发生。
有关详细信息,请参阅Telerik网站上的help topic。
我建议您使用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
触发时更新页面的全部/部分内容。您需要在控件(或更高版本)的OnLoad
事件期间检查RadTextBox值,以便为控件初始化所有ViewState和表单值。
protected void InputVinInformationTextBox_OnLoad(object sender, EventArgs e)
{
if (InputVinInformationTextBox.Text.Length >= 8)
{
VinSubmitButton.Enabled = true;
}
else
{
VinSubmitButton.Enabled = false;
}
}