日期:2014-05-20  浏览次数:20718 次

vs2005的textbox控件是不是不支持onfocus了?
我在2003上用的textbox控件onfocus上用了onfocus= "Javascript:calendar() "   ,弹出个选择时间的控件;可以正常使用;
但是我在2005上却不对,说onfocus无效。怎么回事?

------解决方案--------------------
我网页中的代码,运行没有问题
TextBox_price.Attributes.Add( "onfocus ", "this.select() ");
------解决方案--------------------
to kisssuner:
没看懂代码的意思,TextBox_price.Attributes.Add( "onfocus ", "this.select() ");
this.select()是后台的一个自编的函数吗?我在Page_Load加了你这句,然后随便写了一个select()函数做试验,怎么运行后点击TextBox_price控件一点儿反应都没有?
private void select()
{
Response.Write( "fjkdfjdkfj ");
}
------解决方案--------------------
这个卐解
回复人:xiahouwen(武眉博 <活靶子.NET> ) ( ) 信誉:105 2007-1-4 18:32:39 得分:0

xxx page_load (xxx)
{
if(!Page.IsPostback)
{
yourTextBoxId.Attributes[ "onfocus "] = "Javascript:calendar() " ;
}
}
------解决方案--------------------
onfocus是客户端事件,管它是VS2005还是VS2003,所有服务器端控件在客户端都得呈现为相应的html标签,比如 TextBox在客户端就呈现为input或Textarea标签,不知道楼主是怎么写的代码?哪里出现onfocus无效的提示?

to foxd() :
你的用来试验的代码肯定不能运行了,TextBox_price.Attributes.Add( "onfocus ", "this.select() ");这是给客户端的onfocus事件指定select()这个方法,这个方法应该在客户端脚本中定义,而不是服务器端的方法,你写个服务器端方法肯定无法调用了
------解决方案--------------------
不能直接在html代码中添加,必须通过代码方式,如在page的onload事件中添加
textbox1.Attributes.Add( "onfocus ", "javascript:calendar(); ")

直接在html代码中添加,.Net 会认为它是服务器端的事件。
------解决方案--------------------
因为确实没有onfocus这个属性,呵呵……我的意思是在XHTML 1.x里面。

onfocus虽然被一些浏览器支持(起码IE是支持的),也是HTML 4.0的标准,不过它没出现在XHTML 1.0中。VS2005默认是使用XHTML来验证文档的合法性的,当然会认为onfocus是一个非法属性。

你要么就选择放弃XHTML合法性,要么就放弃直接声明onfocus,二者必选其一。当然放弃直接声明onfocus并不代表你不能用这个事件,例如你可以在javascript中判定了浏览器的类型,再动态绑定此事件。