在开发Web应用程序时,经常需要处理表单输入框,特别是带有水印的文本输入框。本文将介绍如何使用Ajax Control Toolkit库中的TextBoxWatermark控件,以及在新版本中的变化。
Ajax Control Toolkit的最新版本带来了一些重要的变化,这些变化影响了所有使用它的开发者。其中最显著的变化是命名空间和控件名称的更改。大多数JavaScript类都被移动到了Sys.Extended.UI命名空间,并且一些类名也被重命名了。
对于本文描述的技术来说,关键的类是AjaxControlToolkitTextboxWrapper,它现在被重命名为Sys.Extended.UI.TextBoxWrapper,这是一个重大的变更。幸运的是,它的大多数方法名称没有改变,但使用这个包装器的新方式已经被引入。
首先,需要获取文本框控件的Sys.Extended.UI.TextBoxWrapper类的实例。这是与ACT的旧版本相比新引入的技术:
// 获取文本框元素的实例
var textBox = $get(textBoxId);
// 使用TextBoxWrapper类的get_Wrapper静态方法
// 来获取文本框的包装器实例
var wrapper = Sys.Extended.UI.TextBoxWrapper.get_Wrapper(textBox);
在上述代码中,首先假设ACT已经存在,因此不需要检查Sys.Extended.UI命名空间是否定义。其次,即使文本框没有水印,上述代码也是安全的:get_Wrapper静态方法总是返回TextBoxWrapper的实例;如果文本框没有水印,将创建一个新的实例。
现在,可以使用TextBoxWrapper的实例来设置或获取文本框的值:
// 获取文本框的值
var oldValue = wrapper.get_Value();
// 设置文本框的值
wrapper.set_Value(newValue);