ASP.NET中服务器端控件内, 如何使用回车直接提交? 50
不说废话,如题,比如说在一个页面中,既有用户登录(Login),又有页面搜索或者新用户注册(CreateUserWizard),那么就会造成这样的局面:无论光标在哪个控件...
不说废话, 如题, 比如说在一个页面中, 既有用户登录(Login), 又有页面搜索或者新用户注册(CreateUserWizard), 那么就会造成这样的局面:
无论光标在哪个控件区域内, 只要在页面中单击回车键, 则页面永远只提交最上方的控件.
比如说我的搜索控件(包含TextBox和asp:Button)在页面最上方, 但是我现在不想搜索, 我只想登录我的账号, 于是我在下方的Login控件内输入我的账号和密码, 然后习惯性的击回车, 但是遗憾的是, 我并没有登录网站, 而是直接进行了搜索.
如果想登录, 只能点击"用户登录"按钮, 但可想而知, 大部分人在搜索、注册、登录时都是极少去点按钮的,通常只会以回车代替。
引起这种现象的原因其实很简单,ASP.NET的页面中只允许出现一个<form runat="server">, 所以, 你一击回车, 页面只知道你要提交, 但不知道你要提交哪一部分, 默认提交最上方的控件.
####关于解决方案#####
我现在的解决方法很像是一种hack, 我在每组可提交的服务器端控件外嵌套<asp:panel>控件, 然后设置panel控件的defaultButton属性为内部所套控件的Button, 这样可以解决大部分问题, 但新问题如下:
1、频繁嵌套,影响执行效率,而且事实上我本来不需要panel控件,这样做有点浪费而且大而无当。
2、并不能从根本上解决问题,panel只能嵌套一层, 如果控件不只一层, 比如“用户注册”控件,是分好几层的,先让用户填写基本信息, 然后点击“下一步”,然后填写详细信息, 再“下一步“.......
这时,问题就有了, 填"基本信息"时, 回车键提交正常, 后面就不行了, 当我填完"详细信息"后, 一打回车, 又转到了"网页搜索".
####其它解决方案####
写一段Javascript, 当检测到页面中有回车键(13)时, 将回车(13)转化为Tab键(9).
if (event.keyCode == 13)
{
event.keyCode=9;
}
也有其他的, 不过跟这基本类似, 顶多加上一些别的判断, 这还不如用Panel呢, 这样做只能移动焦点, 根本不能提交, 严重不推荐.
####期待解决方案#####
完整的,详细的,完美的解决此类问题, javascript或者服务器端编程均可, 请附完整代码, 不要只讲道理, 因为大部分人都懂道理, 但懂道理不一定能写出代码, 此问题希望专业人士作答, 勿从网上搜索拷贝, 网上我都找过了, 都算不上好.
再次向回答者致敬! 展开
无论光标在哪个控件区域内, 只要在页面中单击回车键, 则页面永远只提交最上方的控件.
比如说我的搜索控件(包含TextBox和asp:Button)在页面最上方, 但是我现在不想搜索, 我只想登录我的账号, 于是我在下方的Login控件内输入我的账号和密码, 然后习惯性的击回车, 但是遗憾的是, 我并没有登录网站, 而是直接进行了搜索.
如果想登录, 只能点击"用户登录"按钮, 但可想而知, 大部分人在搜索、注册、登录时都是极少去点按钮的,通常只会以回车代替。
引起这种现象的原因其实很简单,ASP.NET的页面中只允许出现一个<form runat="server">, 所以, 你一击回车, 页面只知道你要提交, 但不知道你要提交哪一部分, 默认提交最上方的控件.
####关于解决方案#####
我现在的解决方法很像是一种hack, 我在每组可提交的服务器端控件外嵌套<asp:panel>控件, 然后设置panel控件的defaultButton属性为内部所套控件的Button, 这样可以解决大部分问题, 但新问题如下:
1、频繁嵌套,影响执行效率,而且事实上我本来不需要panel控件,这样做有点浪费而且大而无当。
2、并不能从根本上解决问题,panel只能嵌套一层, 如果控件不只一层, 比如“用户注册”控件,是分好几层的,先让用户填写基本信息, 然后点击“下一步”,然后填写详细信息, 再“下一步“.......
这时,问题就有了, 填"基本信息"时, 回车键提交正常, 后面就不行了, 当我填完"详细信息"后, 一打回车, 又转到了"网页搜索".
####其它解决方案####
写一段Javascript, 当检测到页面中有回车键(13)时, 将回车(13)转化为Tab键(9).
if (event.keyCode == 13)
{
event.keyCode=9;
}
也有其他的, 不过跟这基本类似, 顶多加上一些别的判断, 这还不如用Panel呢, 这样做只能移动焦点, 根本不能提交, 严重不推荐.
####期待解决方案#####
完整的,详细的,完美的解决此类问题, javascript或者服务器端编程均可, 请附完整代码, 不要只讲道理, 因为大部分人都懂道理, 但懂道理不一定能写出代码, 此问题希望专业人士作答, 勿从网上搜索拷贝, 网上我都找过了, 都算不上好.
再次向回答者致敬! 展开
5个回答
展开全部
在Form上加一个默认的按钮,如,Submit按钮,
在Submit_Click()里编写提交动作所需的代码。
在Submit_Click()里编写提交动作所需的代码。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if(textbox1.text!=""){
sou(string var);
}
if(textbox2.text!=""){
denglu(string var);
}
if(textbox3.text!=""){
zhuce(string var);
}
三个方法sou(string var); denglu(string var);zhuce(string var);
我是新手 这样可以么?。判断所填内容 哪个填了就执行哪个对应方法。。
sou(string var);
}
if(textbox2.text!=""){
denglu(string var);
}
if(textbox3.text!=""){
zhuce(string var);
}
三个方法sou(string var); denglu(string var);zhuce(string var);
我是新手 这样可以么?。判断所填内容 哪个填了就执行哪个对应方法。。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
思路,当你点击某个form是设置相关属性,然后onkeypress时触发一个事件,来判断到底点击了那个form,并提交到相应表单
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建议把TabIndex靠前.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用ajax技术
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询