我有一个这样的表格:
<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>
在一个浏览器中愉快地提交用户按下来自其中一个字段的输入,而在另一个浏览器中则没有。奇怪的是,如果我删除第二个字段,它可以同时使用。
我的问题是 - 是否可以使用没有显式提交元素的表单?我真的很喜欢这种行为。
答案 0 :(得分:6)
没有明确提交是糟糕的用户体验。在过去的十年中,您的典型最终用户已经学会了一套网站表单交互原则。也就是说,您可以在字段之间切换,您可以选择许多复选框,并且您只需单击按钮即可实际提交数据。
我过去曾尝试使用JavaScript自动更新表单,我收到了无数用户投诉。他们想要一个按钮,或者他们不相信它有效。因此,在这种特殊情况下,我保持表单的工作原样,但添加了一个真正没有做任何事情的提交按钮。他们很高兴。
这些天我只是用普通的提交按钮构建我的表单。用户不仅期望它,而且可以在非JS浏览器之间实现更清晰的渐进增强。
答案 1 :(得分:2)
使用没有提交元素的表单肯定是可能的,特别是如果您使用JavaScript事件提交表单。我强烈建议您使用onkeypress事件来检测被按下的“输入”键,而不是依赖于浏览器只是接受“输入”键,如果您制作一个没有提交的表单,以使其与浏览器兼容。
但是,我认为省略某种提交按钮是不好的形式。 (它不一定是“提交”类型的输入,可以是“按钮”或您单击的图像。)只需要一个标准,人们可以通过按钮填写提交表单,并且您正在服用离开,这可能会使许多习惯按钮的用户感到困惑。它绝对违反了Don't Make Me Think的原则,提出了另一种形式的规范。
答案 2 :(得分:1)
这不是一个好主意。你自己指出了原因 - 它并不适用于所有浏览器。而且,这不是人们所期望的,所以它可能会让人感到困惑。
答案 3 :(得分:0)
这取决于你对“ok”的意思。
如果你的意思是有效的(x)html,那么根本没问题,但在用户方面,这是一个可用性问题。但它也取决于您网站的目标受众。如果是技术精湛的人,那就没关系。
你可以像这样创建一个输入按钮:
<input type="button" onclick("doSomething()") />
doSomething()将是Javascript中的一个函数,它将您的表单数据发送到服务器端脚本。这样您就不会有提交行为。
答案 4 :(得分:0)
Submitting a form on 'Enter' with jQuery?
另外,我将按钮保留在表单中,但用javascript($('#submit')。hide())隐藏它。这意味着如果用户已禁用脚本或f.ex.使用其他设备,他会看到提交表单的默认方式。
答案 5 :(得分:-1)
如果您想要提交两个按钮,这两个按钮会产生两种不同的行为。你能做到的就是这样:
或者您可以将表单提交到function1()或function2()
中