Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何查找触发表单提交事件的键_Javascript_Jquery - Fatal编程技术网

Javascript 如何查找触发表单提交事件的键

Javascript 如何查找触发表单提交事件的键,javascript,jquery,Javascript,Jquery,我有一个包含多个字段的表单,但只有一个必填字段。当填写必填字段并按下Enter键时,将出现问题,表单将被提交 如果在文本区域内按Enter键,则没有问题,但对于文本框,表单将被提交 我想下面是一个解决办法 订阅podio表格提交活动 查找导致表单提交的键 如果表单提交由Enter键触发,则阻止默认操作 现在我正在使用下面的方法 $("form").bind("keypress", function (e) { if (e.keyCode == 13) {

我有一个包含多个字段的表单,但只有一个必填字段。当填写必填字段并按下Enter键时,将出现问题,表单将被提交

如果在文本区域内按Enter键,则没有问题,但对于文本框,表单将被提交

我想下面是一个解决办法

  • 订阅podio表格提交活动

  • 查找导致表单提交的键

  • 如果表单提交由Enter键触发,则阻止默认操作

现在我正在使用下面的方法

$("form").bind("keypress", function (e) {
    if (e.keyCode == 13) {              
      e.preventDefault();
    }
});

它工作得很好。但是有没有办法在表单提交事件中做到这一点呢?

旧答案:

<table><form>
<tr>
    <td>First Name:
    </td>
    <td><input type='text' id='txtFName'/ >
    </td>
</tr>
<tr>
    <td>Last Name:
    </td>
    <td><input type='text' id='txtLName'/ >
    </td>
</tr>
<tr>
    <td>Age:
    </td>
    <td><input type='text' id='txtAge'/ >
    </td>
</tr>
<tr>
    <td>Email:
    </td>
    <td><input type='text' id='txtEmail'/ >
    </td>
</tr>
<tr>
    <td colspan="2" style='text-align:center;'><input type="submit" id="btnSubmit" value=" Submit ">
    </td>
</tr>
</form>
</table>
    $(document).ready(function() {
    $('form').submit(function(e) {
        var isValid = true;
        var allow = false;
        $('input[type="text"]').each(function() {
            if ($.trim($(this).val()) == '') {
                isValid = false;
                $(this).css({
                    "border": "1px solid red",
                    "background": "#FFCECE"
                });                 
            }
            else {
                $(this).css({
                    "border": "",
                    "background": ""
                });
            }
        });
        if (isValid == false){ 
            if(!confirm('Few Fields are empty! Are you sure want to continue?')){
                e.preventDefault();
          } else {
          alert('Thank you for submitting');
          }            
        }
        else 
           alert('Thank you for submitting');
        });
});
var键={
输入:13
};
$('form')。关于('submit',函数(e){
e、 预防默认值();
如果(选中全部必填字段已定义()){
$(this)[0].submit();//调用本机事件,因为调用jquery事件会让您反复使用同一个函数
}
});
函数checkIfallRequiredFieldsRefilled(){
//如果检查比较复杂,请在这里进行检查。否则只需在if子句中进行检查
返回true;
}

在前面的答案中看到您的评论后,您可以像这样验证您的表单

HTML:

<table><form>
<tr>
    <td>First Name:
    </td>
    <td><input type='text' id='txtFName'/ >
    </td>
</tr>
<tr>
    <td>Last Name:
    </td>
    <td><input type='text' id='txtLName'/ >
    </td>
</tr>
<tr>
    <td>Age:
    </td>
    <td><input type='text' id='txtAge'/ >
    </td>
</tr>
<tr>
    <td>Email:
    </td>
    <td><input type='text' id='txtEmail'/ >
    </td>
</tr>
<tr>
    <td colspan="2" style='text-align:center;'><input type="submit" id="btnSubmit" value=" Submit ">
    </td>
</tr>
</form>
</table>
    $(document).ready(function() {
    $('form').submit(function(e) {
        var isValid = true;
        var allow = false;
        $('input[type="text"]').each(function() {
            if ($.trim($(this).val()) == '') {
                isValid = false;
                $(this).css({
                    "border": "1px solid red",
                    "background": "#FFCECE"
                });                 
            }
            else {
                $(this).css({
                    "border": "",
                    "background": ""
                });
            }
        });
        if (isValid == false){ 
            if(!confirm('Few Fields are empty! Are you sure want to continue?')){
                e.preventDefault();
          } else {
          alert('Thank you for submitting');
          }            
        }
        else 
           alert('Thank you for submitting');
        });
});

是否禁用form.submit并手动提交表单?当用户单击按钮并通过ajax发布时,可能是另一个解决您想要的问题的方法,无论您是想避免
TextBox-回车键
表单提交,还是想在按下
TextBox-回车键
时识别
?@NnN我想知道回车键是否导致表单提交事件中的表单提交。form.onsubmit()正在侦听表单的提交事件。问题是,我只有一个必填字段,所有其他字段都是非必填字段。因此,我无法确认客户机是否填写了他/她想要填写的所有字段。@akbaradhusha那么,只需检查所需的
input
字段是否已填写(在
checkifAllRequiredFieldsRefilled()
函数中),并返回正确的
true
false
即可,其余部分由代码完成。如果
checkifAllRequiredFieldsRefilled()
返回
true
它将提交公式。如果我的要求不明确,我很抱歉。我的问题是这样的。我有字段A、B、C和D,只有A是必需的。客户填写了A,然后填写了B,并意外按下了enter键。我们不能确定客户是否意外按下了enter键,或者他真的想提交表单。所以我想要阻止表单在回车时提交。希望这次我能说清楚。