我有一个问题出现在所有浏览器中。
我正在使用ASP.NET MVC。
我的控制器使用各种提交按钮呈现html表单(其原因在下面的附录中进行了说明)。
在正确的情况下,制表符会将焦点发送到正确的提交按钮,而按Enter键似乎使用了错误的按钮来提交表单。 我可以使用HttpContext.Request.Params集合来确定哪个按钮提交了表单,如下所示:
foreach (var step in WizardSteps)
{
// A naming convention links the step action to the button name.
// If returns null, then it was a Next or Previous button
string s = step.Value.ActionName;
if (ControllerContext.HttpContext.Request.Params[s + "Button"] != null)
{
return s;
}
}
return null;
[我正在ASP.NET MVC中设计一个向导框架,因此是WizardSteps集合。 见附录]
摘要:
问题是,如果用户只是从上一个输入控件中按下回车键,则将使用WRONG按钮而不是使用呈现的html中紧随其后的Submit按钮(即“ NEXT >>”按钮)来提交表单。 按下Tab键会将焦点发送到正确的控件。
确定按下Tab键和Enter键应该将焦点发送到同一位置吗?
你能想到发生了什么吗? 制表以正确的顺序进行,所以这不是问题。
请注意:由于这是HTML问题,因此尝试通过jQuery解决它不是很好。
附录:
我正在为ASP.NET MVC设计向导框架。 我需要很多向导,因此值得付出额外的努力。 我有一个基本的控制器,它很聪明,可以找出存在的步骤和顺序(它使用属性和反射来构建WizardSteps)。 一切正常,但是...
解决了先前的问题(仅一个文本输入控件在IE中产生错误)。 但这现在让我傻了起来:任何框架都必须产生标准的行为。
这些是HTML问题,所以请不要使用jQuery。
源代码格式:
οnsubmit="Sys.Mvc.AsyncForm.handleSubmit(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, updateTargetId: 'wizardStep' });">
id="topNextButton" />
Please enter the details of the person to whom newsletter and other information
should be sent;
Name
Title
First Name
Last Name
Postal Address
Address
Postcode
Comm Details
Telephone
id="NextButton" />
问题是,当用户在电话文本输入中时按Enter键时,表单将提交,就好像单击了StartButton提交按钮一样。
这是错误的,并且我看不到html引起的任何问题。 正确按下Tab键会将焦点发送到NextButton提交按钮。