1.在基页面内的load事件里加入supportDefaultButton()
2.基页面中声明变量:
Protected DefaultButton As Button
3.在基页面中加入函数supportDefaultButton并重载RaisePostBackEvent
Private Sub supportDefaultButton()Sub supportDefaultButton()
GetPostBackEventReference(New System.Web.UI.Control)
RegisterStartupScript("DefaultButton", "<script language='javascript' src='/js/DefaultButton.js'></script>")
End Sub
Protected Overloads Overrides Sub RaisePostBackEvent()Sub RaisePostBackEvent(ByVal sourceControl As System.Web.UI.IPostBackEventHandler, ByVal eventArgument As String)
If (DefaultButton Is Nothing OrElse Request("__EVENTTARGET") <> "") Then
MyBase.RaisePostBackEvent(sourceControl, eventArgument)
ElseIf (Not DefaultButton Is Nothing) Then
MyBase.RaisePostBackEvent(DirectCast(DefaultButton, System.Web.UI.IPostBackEventHandler), Nothing)
End If
End Sub
4.DefaultButton.js文件内容:
for(i=0;i<Form1.elements.length;i++)
{
if(Form1.elements[i].type == "submit")
{
fstsubmit = Form1.elements[i]
fstsubmit.attachEvent("onmouseup", changeEvent)
//break; 这一句应该去掉
}
}
function changeEvent()
{
__doPostBack(event.srcElement.id, '')
}
在继承页面的load事件里:
5.DefaultButton = 需要设置为默认按钮的对象名称
即可。
把我解决方案给大家看看
/// <summary>
/// 设置在页面回车时触发事件的控件
/// </summary>
/// <param name="Ctrl">将触发事件的控件对象</param>
public static void SetEnterControl(System.Web.UI.Control Ctrl)
{
Page mPage = Ctrl.Page;
string mScript;
mScript = @"<script language=""javascript"">
function document.onkeydown()
{
var e = event.srcElement;
var k = event.keyCode;
if (k == 13 && e.type != ""textarea"")
{
document.all." + Ctrl.ClientID + @".click();
event.cancelBubble = true;
event.returnValue = false;
}
}
</script>";
if(!mPage.IsClientScriptBlockRegistered("SetEnterControl"))
mPage.RegisterClientScriptBlock("SetEnterControl",mScript);
}

