我有一个调查网站,在用户填写问卷时,似乎存在按下回车键(原因未知)并且在没有点击提交按钮的情况下,意外提交了问卷表单的问题。是否有方法可以防止这种情况发生?
我在调查中使用HTML、PHP 5.2.9和jQuery。
我有一个调查网站,在用户填写问卷时,似乎存在按下回车键(原因未知)并且在没有点击提交按钮的情况下,意外提交了问卷表单的问题。是否有方法可以防止这种情况发生?
我在调查中使用HTML、PHP 5.2.9和jQuery。
这是我的解决方案,能够达成目标,而且干净有效。
$('form').submit(function () {
if ($(document.activeElement).attr('type') == 'submit')
return true;
else return false;
});
javascript:void(0)
来阻止表单提交。
<form action="javascript:void(0)" method="post">
<label for="">Search</label>
<input type="text">
<button type="submit">Submit</button>
</form>
method="post"
时,这种方法不起作用。例如,我希望通过按钮提交表单,但是在输入框聚焦时按下回车键不会触发提交。 - Soulestemethod="post"
并且有效,请再次检查。 - Nisharg Shah不需要放置提交按钮也可以。只需将脚本放到输入框(type=button)中,或者添加一个eventListener,如果想将数据提交到表单中。
最好使用这个方法:
<input type="button" onclick="event.preventDefault();this.closest('form').submit();">
比起使用这个更好。
<input type="submit">
注意:在这里需要使用onclick以便在单击时实际提交表单。默认情况下,type="button"
不足以提交表单。
$('form input').keydown(function (e) {
if (e.keyCode == 13) {
e.preventDefault();
return false;
}
});
<form action="javascript:void(0);">
<input type="text" />
</form>
<script>
$(document).ready(function() {
$(window).keydown(function(event){
if(event.keyCode == 13) {
alert('Hello');
}
});
});
</script>
我需要防止特定的输入提交,因此我使用了类选择器,让它成为一个“全局”功能,无论在哪里使用都可以。
<input id="txtEmail" name="txtEmail" class="idNoEnter" .... />
以下是jQuery代码:
$('.idNoEnter').keydown(function (e) {
if (e.keyCode == 13) {
e.preventDefault();
}
});
如果 keydown 不足以满足需求:
$('.idNoEnter').on('keypress keydown keyup', function (e) {
if (e.keyCode == 13) {
e.preventDefault();
}
});
一些注意事项:
修改了各种好的答案,Enter键似乎在所有浏览器上都可以用于keydown
。至于替代方案,我将bind()
更新为on()
方法。
我非常喜欢类选择器,权衡了所有利弊和性能讨论。我的命名约定是'idSomething',以指示jQuery正在使用它作为标识符,以将其与CSS样式分开。
$(document).on('keyup keypress', 'form input[type="text"] , input[type="password"]', function(e) {
if (e.keyCode == 13) {
e.preventDefault();
return false;
}
});
<script type="text/javascript">
function noenter() {
return !(window.event && window.event.keyCode == 13); }
</script>
只需在提交方法中调用它即可。
$('form').on('keypress', function(e) {
// Register keypress on buttons.
$attr = $(e.target).attr('type');
$node = e.target.nodeName.toLowerCase();
if ($attr === 'button' || $attr === 'submit' || $node === 'textarea') {
return true;
}
// Ignore keypress if all fields are not populated.
if (e.which === 13 && !fieldsArePopulated(this)) {
return false;
}
});
textarea
字段的条件语句。目前情况下,它不能在 textarea
字段中创建新行。 - NaN