在上一个问题中,我问了同样的问题,但是当用户在文本框中时,我没有阻止提交的答案.
所以基本上我需要的是能够阻止一个人提交表单,除非明确点击提交按钮.
编辑:
基本上这样做的主要原因是这是雇主调查.在这方面的人不会是技术上最精明的,我正在为此做的客户要求这样做.
我在表格中有一张桌子.该表包含一些表单字段,但表格外部还有表单字段(但仍在表单中).
我知道Enter和Return传统上用于通过键盘提交表单,但我想为表中的字段停止此行为.例如,如果我将一个字段集中在表中并按Enter/Return,则不会发生任何事情.如果我将一个字段聚焦在表格之外(但仍然在表格内),那么它就像正常一样提交.
我有一个针对此表的jQuery插件.简化,这是我迄今为止尝试过的:
base.on('keydown', function(e) {
if (e.keyCode == 13) {
e.stopPropagation();
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
base表jQuery对象在哪里.这是我的插件的init方法.但是,按Enter键仍会提交表单.
我哪里错了?
编辑:一些简化的HTML:
<form method="" action="">
<input type="text" /><!--this should still submit on Enter-->
<table>
<tbody>
<tr>
<td>
<input type="text" /><!--this should NOT submit on Enter-->
</td>
</tr>
</tbody>
</table>
</form>
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用jQuery对话框在我的页面中输入数据.由于某种原因我不明白,当用户按回车键时,整个页面都会刷新.它甚至不验证文本框中的内容.
我创建了一个显示问题的jsfiddle.我在这里检查了文档,我的代码似乎遵循了指南,但我必须遗漏一些东西!
这是我如何调用对话框
$("#create-subtitle")
.click(function () {
$("#dialog-form-subtitles").dialog("open");
return false;
});
Run Code Online (Sandbox Code Playgroud)
这是我的一个对话框:
$("#dialog-form-steptitles").dialog({
autoOpen: false,
height: 220,
width: 450,
modal: true,
buttons: {
"Ajouter un sous-titre pour les étapes": function () {
var bValid = true;
allFieldsStepTitle.removeClass("ui-state-error");
bValid = bValid && checkLength(nameStepTitle, "sous-titre pour les étapes", 3, 50);
if (bValid) {
var $parent = $("#StepTitles");
var numElem = $parent.find("tr").length;
$('#StepTitles > tbody:last').append('<tr><td><input class="text-box single-line" id="StepTitles_' + numElem + '__Name" name="StepTitles[' + numElem + …Run Code Online (Sandbox Code Playgroud) 我有一个相当复杂的形式,有多个阶段,有许多不同的文本字段和文本区域.它在使用过的条形码中使用的环境默认情况下是输入的,并且可以选择使用它们扫描大量产品,因此关闭输入功能已成为一个禁忌.
我正在使用表单向导脚本,它在输入阶段处理客户端验证.填写表单时输入键被中断,并且在刷新页面之前拒绝提交,此脚本会中断.
<a href="javascript:;" class="btn green button-submit">Submit <i class="m-icon-swapright m-icon-white"></i></a>
Run Code Online (Sandbox Code Playgroud)
我有以下代码,可以防止在表单上输入,并允许在单击上面的链接时提交表单.
$(window).keydown(function (event) {
if (event.keyCode == 13) {
event.preventDefault();
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
但是这可以防止在textarea中使用输入.我做了一些研究并尝试使用is()jQuery中的运算符
$(document).ready(function () {
$(window).keydown(function (event) {
if (event.keyCode == 13 && !event.is("textarea")) {
event.preventDefault();
return false;
}
});
});
Run Code Online (Sandbox Code Playgroud)
这不起作用,它无法阻止输入中的输入键,并使表单停止提交,就像之前一样.
最后,如果验证在表单上传递,这是处理提交表单的javascript
$('#form_wizard_1 .button-submit').click(function () {
// Can put more onsubmit processing here
document.getElementById('submit_form').submit();
}).hide();
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议我如何阻止所有输入的输入键除了textareas.我并不假装自己是一名JavaScript开发人员,尽管我正在努力学习.以下是我读过的文章,试图改编代码或未能理解它如何以正确的方式适用于我:
*关于最后一个链接,我需要一个全局解决方案,自动阻止它在表单中可能存在的所有textareas.
一如既往,感谢您的帮助.
我有一个简单的表格.
输入字段,复选框,单选按钮和最后的SUBMIT按钮.
我使用jQuery来执行AJAX验证,但是当用户在输入字段中按下ENTER时,它会提交表单!
如何阻止此表单(不是所有输入字段)发生这种情况?
我已经构建了一个监听器来防止表单在特殊情况下提交.
我正在使用谷歌地图自动完成api,基本上我不想在用户按Enter键时提交表单,并显示"推荐结果框".当用户按Enter键从下拉框中选择一个值而不是提交表单.
我已经构建了一个正确捕获事件的侦听器,但我不知道如何阻止提交表单.
$('body').live('keydown', function(e) {
if($(".pac-container").is(":visible") && event.keyCode == 13) {
e.preventDefault(); // Prevent form submission
}
});
Run Code Online (Sandbox Code Playgroud)
我试过e.preventDefault(); 但它仍然提交表格.表单ID是:updateAccountForm
我怎样才能防止它发生?
编辑:我必须指出,直接在搜索输入上搜索按键似乎与Google API冲突使自动完成功能无效.所以没有$('input#search')keydown/keypress是可能的
我有一个表单,其中onkeyup触发为某些字段创建建议框.我可以捕获向上箭头,向下箭头和转义的击键,并相应地使用它们在建议框中移动或关闭它.我想使用enter将他们的选择移动到触发建议的输入字段.但是,我似乎无法捕获输入击键.
控件永远不会进入我的javascript建议功能.相反,表格只是提交.我已经尝试了在输入时返回false的noEnter函数传递给onkeypress和onkeydown用于有问题的输入元素,没有骰子.该表单似乎从所有输入事件处理程序中获取控制权,并在其中任何一个可以执行任何操作之前提交自身.
表单提交是否覆盖字段中的所有其他事件处理程序,或者此处还有其他内容吗?如果确实如此,那有什么办法吗?
这是有问题的元素(删除了一些值):
<input type="text" name="myInput" id="myInputField" size="22" onkeypress="noEnter(event)" onkeyup="suggest(event)" onblur="hideSuggestions()">
Run Code Online (Sandbox Code Playgroud)
这是javascript来捕捉它:
var evnt = (event ? event : window.event);
var key = evnt.keyCode;
if(key == 13) { // Handle Enter
alert("ENTER PRESSED.");
hideSuggestions();
return false;
}
Run Code Online (Sandbox Code Playgroud)
警报永远不会触发.放在函数顶部的警报也不会触发.但是,对于转义键,当我将完全相同的代码放入if检查key == 27警报时.
关于几乎相同的主题还有其他问题,例如:阻止用户通过输入#2来提交表单
但是,我没有使用jquery,我只想阻止enter提交这个字段.但是,各种问题中提到的其他解决方案似乎都不起作用.
EDITTED:解释密钥的设置位置.
是否可以阻止回车键提交表单,但允许回车键在输入中工作。(例如textArea换行符)?
到目前为止我尝试过:
e.preventDefault()e.stopPropagation()两者都在表单标签上onkeyup="if (e.keyCode == 13))"
这确实阻止了通过 Enter 键提交表单,但它也阻止了 Enter 键完全在表单字段内工作。我想要实现的是,当我在 TextArea 中按 Enter 键时,它会创建一个 newLine ,但是当我在 a 中按 Enter 键时input type="text",它不会提交表单。
使用 JSF 2.3
JQuery 解决方案也可以。
我正在使用jQuery表单插件发送ajax请求.你可以在下面的网址找到
http://malsup.com/jquery/form/
Run Code Online (Sandbox Code Playgroud)
这是我的jQuery代码
$(document).ready(function()
{
$('#SubmitForm').on('submit', function(e)
{
e.preventDefault();
$('#submitButton').attr('disabled', '');
$(this).ajaxSubmit({
target: '#output',
success: afterSuccess //call function after success
});
});
});
function afterSuccess()
{
$('#submitButton').removeAttr('disabled'); //enable submit button
}
Run Code Online (Sandbox Code Playgroud)
这段代码显示在div id输出上,每次我提交的代码都将删除旧的输出并显示新的输出.我想要做的是,保持旧的输出并在旧输出的顶部显示新的输出.有人能告诉我怎么做.
我有一个表单,在输入文本框中我输入一个数字,然后按ENTER键,我使用jQuery将值附加到textarea.一切正常.
我遇到的问题是,如果我添加一个提交按钮来提交表单,只要我按下ENTER,它就会提交表单.
我想要它做的不是在按Enter键时提交表单,而是仅在单击提交按钮时提交表单.
我尝试过使用preventDefault()并返回false,这将停止按Enter键提交表单,但如果我在提交按钮上添加一个click事件来提交表单,它什么都不做.我在提交之前在点击功能中发出警报,但是火灾但表格没有提交
<form id="toteform" method="post" action="blah.php">
<input type="text" name="bin" id="bin" maxlength="4" autocomplete="off" />
<input type="text" name="totes" id="tote" maxlength="4" autocomplete="off" />
<input type="button" name="submit" class="submit" id="submit" value="Submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
jQuery的
$("#submit").click(function() {
$('#toteform').submit();
});
$('#bin').focus();
$('#bin').keypress(function(e) {
if(e.which == 13) {
$('#tote').focus();
}
});
$('#tote').keypress(function(e) {
if(e.which == 13) {
// more code here to do other things
Run Code Online (Sandbox Code Playgroud) 当使用具有许多文本输入的表单时,当在任何输入元素中按下"输入"时,WebKit/Safari/Google Chrome会提交表单.即使没有提交输入元素也没有注册onclick处理程序.
例如,请参阅此示例代码:
<html>
<body>
<form method="POST" action=".">
<ul>
<li><input type="text" name="foo" value="<?=rand()?>"/></li>
<li><input type="text" name="bar" value="<?=$_POST['foo']?>"/></li>
</ul>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
当在两个文本输入元素中的任何一个中按Enter键时,将提交表单.
由于我使用异步HTTP请求在JavaScript中处理我的表单,因此我需要阻止此行为.我可以为keypressed事件注册一个自定义处理程序来阻止默认和stopPropagation.但它看起来很丑陋,并且在动态添加新的文本输入元素时并不实用.