form表单提交之Enter提交

本文详细解析了不同类型的HTML表单元素(如input和button)在各种情况下的默认提交行为,包括单个文本框、多个文本框、不同类型的按钮及特殊元素等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通常情况下,我们在页面上操作输入框的时候,像搜索框,登录的时候,我们一般输入完成后喜欢直接enter去获取结果,然而尴尬的是当我们在注册的时候,则不喜欢每填完一个内容就enter提交了。其实根据业务的不同需要,需要我们去判断,在这之前需要我们去了解一下浏览器的一些默认行为,以下是总结的经验,亲测,可用。

  • 如果表单里只有一个type=”text”的input,不管按钮是什么type(或有无提交按钮),回车键生效。Chrome/FX/IE均适用
<form action="http://www.baidu.com">
    <input type="text"/>
    <!--<input type="submit" value="提交">-->
    <input type="button" value="提交"/>
    <!--<input type="radio" value="提交"/>-->
    <!--<input type="checkbox" value="提交"/>-->
    <!--<button>提交</button>-->
    <!--<div>提交</div>-->
</form>
<!--注意:只有一个type="text"的input时,不管form中还有什么内容,enter按下后均会提交-->
<!--业务场景并不是都需要enter提交-->
<!--1、需要enter提交,但是想要按enter和提交按钮执行操作一致-->
<!--$(document).keyup(function(event){
    if(event.keyCode ==13){
        $("form").trigger("click");//前提得有一个form的onsubmit点击事件
    }
});-->
<!--2、禁用按enter进行提交-->
<!--页面上隐藏一个<input type="text" style="display:none">-->
  • 只要有type为submit的按钮存在,一个文本框还是多个文本框都提交,Chrome/FX/IE均适用
<form action="http://www.baidu.com">
    <input type="text"/>
    </br></br>
    <input type="text"/>
    </br></br>
    <input type="text"/>
    </br></br>
    <input type="radio" />
    <input type="checkbox" />
    <input type="submit" value="提交">
    <input type="submit" value="提交" style="display:none;">
    <!--<button>提交</button>-->
    <!--<div>提交</div>-->
</form>
  • 只要有type为submit的按钮存在,多个form时同样适用,光标在那个form表单里提交那个表单,Chrome/FX/IE均适用
<form action="http://www.baidu.com" style="border: 1px solid #ddd;margin-bottom: 50px;padding: 20px;width: 300px;">
    <input type="text"/>
    </br></br>
    <input type="text"/>
    </br></br>
    <input type="text"/>
    </br></br>
    <input type="radio" />
    <input type="checkbox" />
    <input type="submit" value="提交" class="submit1">
    <!--<button>提交</button>-->
    <!--<div>提交</div>-->
</form>
<form action="http://www.kugou.com/" style="border: 1px solid #ddd;padding: 20px;width: 300px;">
    <input type="text"/>
    </br></br>
    <input type="text"/>
    </br></br>
    <input type="text"/>
    </br></br>
    <input type="radio" />
    <input type="checkbox" />
    <input type="submit" value="提交" class="submit2">
</form>
<!--为type='submit'的元素添加点击事件,在按回车的时候点击事件的方法同样执行了,此时按回车和加点击事件不冲突-->
<!--$(".submit1").click(function () {
    alert("为type='submit'的元素添加点击事件,在按回车的时候点击事件的方法同样执行了");
});-->
  • 多个文本框的时候,用type为button的按钮,按enter无法进行提交,Chrome/FX/IE均适用
<form action="http://www.baidu.com" style="border: 1px solid #ddd;margin-bottom: 50px;padding: 20px;width: 300px;">
    <input type="text"/>
    </br></br>
    <input type="text"/>
    </br></br>
    <input type="text"/>
    </br></br>
    <input type="radio" />
    <input type="checkbox" />
    <input type="button" value="提交" class="submit1">
</form>
<!--1、需要enter提交,但是想要按enter和提交按钮执行操作一致-->
<!--$(document).keyup(function(event){
    if(event.keyCode ==13){
        $("form").trigger("click");//前提得有一个form的onsubmit点击事件
    }
});-->
  • 用button元素时,button元素不指定type时,enter默认都会提交。Chrome/FX/IE均适用
<form action="http://www.baidu.com" style="border: 1px solid #ddd;margin-bottom: 50px;padding: 20px;width: 300px;">
    <input type="text"/>
    </br></br>
    <input type="text"/>
    </br></br>
    <input type="text"/>
    </br></br>
    <input type="radio" />
    <input type="checkbox" />
    <button>提交</button>
</form>
  • 用button元素时,button元素指定type=submit时,enter默认都会提交,其他type类型按enter均不进行提交。Chrome/FX/IE均适用
<form action="http://www.baidu.com" style="border: 1px solid #ddd;margin-bottom: 50px;padding: 20px;width: 300px;">
    <input type="text"/>
    </br></br>
    <input type="text"/>
    </br></br>
    <input type="text"/>
    </br></br>
    <input type="radio" />
    <input type="checkbox" />
    <button type="submit">提交</button>
</form>
  • type=”image”的input,效果等同于type=”submit”,不知道为什么会设计这样一种type,不推荐使用,应该用CSS添加背景图合适些。Chrome/FX/IE均适用
<form action="http://www.baidu.com" style="border: 1px solid #ddd;margin-bottom: 50px;padding: 20px;width: 300px;">
    <input type="text"/>
    </br></br>
    <input type="text"/>
    </br></br>
    <input type="text"/>
    </br></br>
    <input type="radio" />
    <input type="checkbox" />
    <input type="image" />
</form>

以上是总结的一些form表单提交浏览器的一些默认行为,需要我们加强注意。其中关于button的使用过程中,建议我们每次都指明button的type类型,以防造成不必要的麻烦。

### 实现 HTML 表单的 AJAX 异步提交 #### 使用 jQuery 和 `jquery.form.js` 插件实现表单异步提交 为了简化操作,可以利用 `jquery.form.js` 这一插件来处理复杂的文件上传场景。下面是一个具体的例子: ```javascript function uploadFile() { var options = { success: function(responseText, statusText, xhr, $form) { alert('Thanks for your comment!'); $("#fileInput").val(''); $("#uploadForm").hide(); } }; // 初始化 ajaxForm 方法并将配置项传递进去 $('#uploadForm').ajaxForm(options); } ``` 此方法适用于带有文件输入字段的复杂表单[^1]。 #### 利用原生 JavaScript 的 XMLHttpRequest 或 Fetch API 实现简单的表单异步提交 对于不涉及文件上传的情况,可以直接采用浏览器内置的对象如 `XMLHttpRequest` 或者更现代的 `Fetch API` 来完成任务。这里给出基于 `fetch()` 函数的一个实例: ```javascript document.getElementById('submitBtn').addEventListener('click', async (event) => { event.preventDefault(); const formData = new FormData(document.querySelector('#myForm')); try { let response = await fetch('/your-endpoint-url/', { method: 'POST', body: formData, }); if (!response.ok) throw Error(`HTTP error ${response.status}`); console.log(await response.json()); } catch(error){ console.error('There was a problem with the fetch operation:', error.message); } }); ``` 这段代码展示了如何监听按钮点击事件阻止默认行为,并创建一个新的 `FormData` 对象用于封装 `<form>` 中的数据以便发送到服务器端[^2]。 #### 结合 jQuery Validate 插件进行表单验证后再提交 如果希望先对用户填写的信息做有效性检查再执行提交动作,则可引入 `jQuery Validation Plugin` 。一旦验证成功便触发自定义逻辑来进行后续的操作,比如调用上述提到的方法之一发起请求: ```javascript $("#commentForm").validate({ rules: { fieldname: "required" }, messages: { fieldname: "Please enter something." }, submitHandler: function(form) { $(form).ajaxSubmit({ /* ... */ }); } }); ``` 这种方式确保只有当所有必填项目都满足条件之后才会真正尝试向后台传送数据。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值