不带提交按钮的HTML表单提交

不带提交按钮的HTML表单提交,html,xhtml,standards,Html,Xhtml,Standards,我有一张这样的表格: <html> <body> <form onSubmit="alert('Just got submitted');"> <p> Hello: <input class="field" type="text"/><br/> Goodbye: <input class="field" type="te

我有一张这样的表格:

<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> 
<input type="button" onclick("doSomething()") />
在一个浏览器中,当用户从其中一个字段按enter键时,它会愉快地提交,而在另一个浏览器中则不会。奇怪的是,如果我删除第二个字段,它在两个字段中都起作用


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

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

过去我曾尝试开发使用JavaScript自动更新的表单,但我收到了无数用户的抱怨。他们想要一个按钮,或者他们认为它不起作用。所以在那个特殊的例子中,我保持了表单原来的工作状态,但添加了一个提交按钮,实际上什么都没做。他们很高兴


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

这不是一个好主意。你自己指出了原因——它不适用于所有浏览器。而且,这并不是人们所期望的,因此它可能会让人们感到困惑。

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


然而,我认为省略某种提交按钮是不好的。它不一定是提交类型的输入,可以是按钮或您单击的图像。这只是一个标准,人们通过一个按钮填写submitt表单,你把它拿走了,这可能会让许多习惯于按钮的用户感到困惑。这显然违反了“确定”的原则,因为它提供了规范的替代形式。

这取决于“确定”的含义

如果你指的是有效的xhtml,那么这根本没有问题,但在用户方面,这是一个可用性问题。但这也取决于你网站的目标受众。如果是为精通技术的人准备的,那也没关系

您可以创建如下输入按钮:

<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> 
<input type="button" onclick("doSomething()") />

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

如果您希望有两个按钮在提交时生成两种不同的行为。你所能做到的是:

也可以将表单提交放在函数1或函数2内


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

如果您提供输入名称,是否有效?@Andrew:尊重作者的意图意味着如果作者有问题,则返回给作者。它没有说“回到安德鲁的想法上”。。。这是糟糕的形式。。。哈哈!你太小了