请有人解释一下为什么这段代码不起作用:
$('form').on('submit', function (e) {
e.preventDefault();
var first = $('.first').val();
var next = $(".next").val();
alert(first + " " + next);
});当我移除两个输入中的一个时,它似乎工作得很好,但两者都在那里,这会使它变得一团糟。
发布于 2015-02-25 00:57:53
你需要一个提交按钮。如果您需要,可以隐藏它,但是要想在默认情况下输入提交表单,它需要在那里。
$('form').on('submit', function (e) {
e.preventDefault();
var first = $('.first').val();
var next = $(".next").val();
alert(first + " " + next);
});input[type="submit"] {
display: none;
}<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<form>
<input type="text" name="a" class="first" placeholder="Enter First" />
<input type="text" name="s" class="next" placeholder="Enter Next" />
<input type="submit" value="submit" />
</form>
“如果表单没有提交按钮,那么如果表单有多个阻止隐式提交的字段,则隐式提交机制必须不做任何操作,否则必须从表单元素本身提交表单元素。” 就上一段而言,元素是阻止表单元素隐式提交的字段,如果它是一个输入元素,其表单所有者是该表单元素,并且其类型属性处于以下状态之一: Text,…“
发布于 2015-02-25 01:05:43
此行为在HTML5中显式指定。
http://www.w3.org/TR/html5/forms.html#implicit-submission
“如果表单没有提交按钮,那么如果表单有多个阻止隐式提交的字段,则隐式提交机制必须不做任何操作,否则必须从表单元素本身提交表单元素。” 就上一段而言,元素是阻止表单元素隐式提交的字段,如果它是一个输入元素,其表单所有者是该表单元素,并且其类型属性处于以下状态之一: Text,…“
您的两个输入字段都是type=text,因此当您在字段上按enter时,浏览器不允许隐式提交表单。
您可以添加一个keydown处理程序,该处理程序检查按下哪个键,并在该键恰好是[enter]键时显式调用表单的submit方法或函数。(有关这方面的细节应该很容易通过搜索找到。)
发布于 2015-02-25 00:52:28
澄清:我认为您是在问为什么当有两个enter元素时,input键不提交表单,但是当只有一个input元素时,它会提交表单。
我相信这是由于表单的本质(可能只是浏览器的工作方式)。当提交单个表单输入时,您可以确保没有更多的值可供选择,因此enter键将提交表单。如果有多个输入,那么浏览器可能不会在enter键上提交表单,因为可能还有另一个表单尚未完成。通常,您希望在大多数表单上都有提交按钮,如果没有,您可以按照这个答案中的建议来做:当按下返回键时,如何提交表单?
https://stackoverflow.com/questions/28709146
复制相似问题