Vuejs表单未在“输入”上提交

时间:2019-02-05 20:42:52

标签: javascript vue.js

TL; DR问题

为什么我不能在表单中使用2个相同的输入字段,然后按Enter键提交表单

更详细的问题

直截了当。我正在尝试使用enter按钮在输入元素聚焦时提交表单,然后应该发出一个事件。

如您所见,如果我有1个以上相同类型的输入(例如2个input="text"输入,则当我将焦点放在某个输入上时按下enter按钮时,它将无法发出submit事件。

在紧接其下的第二个应用示例中,我具有完全相同的形式,具有完全相同的vuejs实例化,但是只有一个一个输入字段,并且当您按Enter时,将焦点放在该元素上它会正确发出Submit事件。

我试图通过谷歌搜索可能发生的情况,但是除了“防止在回车时提交表单”外,我一直在努力寻找其他用途。

我尝试将ID属性,name属性等添加到元素,但仍无法按预期工作。

我不是vuejs的初学者,也不是高级JS用户,因此,“简单”的答案将不胜感激:D


如果需要更多信息,请告诉我们,我会尽力提供

2 个答案:

答案 0 :(得分:5)

请确保您的表单具有

<button type="submit">Submit</button>

<input type="submit" value="Submit" />

如果不想显示按钮,可以使用

<input type="submit" style="position: absolute; left: -9999px"/>

您可以在此问题Submitting a form by pressing enter without a submit button

中找到有关隐藏按钮的更多信息。

答案 1 :(得分:0)

我尝试了许多不同的解决方案,但没有一个对我有用。可能是因为我的表单中有几个按钮,只有一个按钮可以提交表单。

This终于奏效了: 在输入的最后一个元素上使用@keyup.enter,如下所示:

<input type="text" @keyup.enter="save" />

这样,当用户在填写完表格的最后一个字段后立即按Enter键即可提交表格。

P.S。 在我的情况下,我使用的是<v-text-field>而不是<input>,但这应该没有区别。