3

我有这样的表格:

<html> 
    <body> 
        <form onSubmit="alert('Just got submitted');">
            <p>
            Hello: <input class="field" type="text"/><br/>
            Goodbye: <input class="field" type="text"/><br/>
            </p>
        </form>
    </body> 
</html> 

在一个浏览器中,当用户从其中一个字段按下回车键时,它会愉快地提交,而在另一个浏览器中,则不会。奇怪的是,如果我删除第二个字段,它在这两个字段中都有效。

我的问题是真的 - 可以有一个没有明确提交元素的表单吗?我真的很喜欢这种行为。

4

6 回答 6

6

没有明确提交是糟糕的用户体验。在过去十年中,您的典型最终用户已经学习了一组网站表单交互原则。即,您可以在字段之间进行选项卡,您可以选择许多复选框,并且您可以单击一个按钮来实际提交您的数据。

我过去曾尝试开发使用 JavaScript 自动更新的表单,但我收到了无数用户的抱怨。他们想要一个按钮,或者他们不相信它正在工作。所以在这种特殊情况下,我保持表单原样工作,但添加了一个实际上没有做任何事情的提交按钮。他们很高兴。

这些天我只是用普通的提交按钮来构建我的表单。不仅用户期望它,而且它允许在不支持 JS 的浏览器之间进行更清晰的渐进增强。

于 2009-03-03T23:10:08.923 回答
2

没有提交元素的表单当然是不可能的,特别是如果您使用 JavaScript 事件来提交表单。我强烈建议您使用 onkeypress 事件来检测按下的“enter”键,而不是依赖浏览器在您制作没有提交的表单时只接受“enter”键,以使其跨浏览器兼容。

但是,我认为省略某种提交按钮是一种不好的形式。(它不一定是“提交”类型的输入,可以是“按钮”或您单击的图像。)人们通过按钮填写提交的表单只是一个标准,而您正在接受那个,这可能会使许多习惯于按钮的用户感到困惑。通过呈现规范的替代形式,它绝对违反了Don't Make Me Think的原则。

于 2009-03-03T23:11:21.947 回答
1

这不是一个好主意。您自己指出原因 - 它不适用于所有浏览器。此外,这不是人们所期望的,因此可能会使人们感到困惑。

于 2009-03-03T23:10:53.490 回答
0

使用 jQuery 在“Enter”上提交表单?

此外,我会将按钮保留在表单中,但使用 javascript ($('#submit').hide()) 将其隐藏。这意味着如果用户禁用了脚本或 f.ex。使用其他设备,他会看到提交表单的默认方式。

于 2009-04-11T04:15:35.017 回答
0

这取决于您对“确定”的含义。

如果您的意思是有效的 (x)html,那完全没有问题,但在用户方面,这是一个可用性问题。但这也取决于您网站的目标受众。如果它适合精通技术的人,那没关系。

您可以像这样创建一个输入按钮:

<input type="button" onclick("doSomething()") />

doSomething() 将是 Javascript 中的一个函数,它将您的表单数据发送到服务器端脚本。这样你就不会有提交行为。

于 2009-03-03T23:33:14.873 回答
-1

如果您希望有两个按钮在提交时产生两种不同的行为。你可以这样做是这样的:

或者您可以将表单提交放在 function1() 或 function2()

于 2009-03-03T23:33:52.453 回答