jq表单:阻止默认提交,获取属性值

本文介绍了一种使用JavaScript实现表单序列化的技巧,通过阻止表单的默认提交行为,并利用serializeArray()方法来序列化表单值。需要注意的是,禁用的元素和提交按钮的值不会被序列化。
$('.submit').click(function(e){
    e.preventDefault();   //阻止默认提交
    var $this = $(this);
    var form = $this.parents('form');
    var data = form.serializeArray();     //输出以数组形式序列化表单值的结果:
});

特别说明,元素不能被禁用(禁用的元素不会被包括在内),并且元素应当有含有 name 属性。提交按钮的值也不会被序列化。文件选择元素的数据也不会被序列化。

以下是几种使用 jQuery 进行自定义表单提交的方法: ### 自定义 action 提交表单 通过点击按钮,设置表单的 action 属性并提交表单。 ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Custom Form Submit</title> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> </head> <body> <form id="SearchForm" name="SearchForm" method="post"> <input type="text" id="UserCode" placeholder="客户号"> <input type="text" id="Verifycode" placeholder="验证码"> <button id="btn">提交</button> </form> <script> $(function () { $("#btn").click(function () { var usercode = $("#UserCode").val(); var verifycode = $("#Verifycode").val(); if ($.trim(usercode) == "" || $.trim(verifycode) == "") { alert(" 您的[客户号]或者[验证码]必须填写!"); return false; } else { document.SearchForm.action = '/index/Search?u=' + usercode; document.SearchForm.submit(); } }); }); </script> </body> </html> ``` 此方法先获取输入框的值,进行简单验证,若验证通过则设置表单的 action 属性并提交表单[^1]。 ### 利用 AJAX 自定义表单提交 使用 AJAX 提交表单数据,可灵活传参并处理响应。 ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>AJAX Form Submit</title> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> </head> <body> <form id="form_comment"> <input type="text" id="comment" placeholder="请输入评论"> <button type="submit">提交评论</button> </form> <script> $(document).ready(function () { function decodeQuery() { var search = window.location.href; return search.split('=')[1].split('?')[0]; } var taskId = decodeQuery(); $("#form_comment").submit(function (event) { event.preventDefault(); var comment = $('#comment').val(); var data = { "comment": comment }; $.ajax({ url: "/task_mgm/taskinfo_comment=" + taskId, type: "POST", data: JSON.stringify(data), contentType: "application/json", dataType: "json", success: function (resp) { if (resp.error == 'OK') { alert('评论成功'); $('#comment').val(''); } else { alert('评论失败'); } } }); }); }); </script> </body> </html> ``` 该方法通过阻止表单默认提交行为,使用 AJAX 发送表单数据到指定 URL,并根据响应结果给出提示[^2]。 ### 将表单转为 AJAX 提交表单数据转换为键值对,使用 AJAX 提交。 ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>AJAX Form Submit</title> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> </head> <body> <form id="myForm" action="/submit" method="post"> <input type="text" name="name" placeholder="姓名"> <input type="email" name="email" placeholder="邮箱"> <button type="submit">提交</button> </form> <script> function ajaxSubmit(frm, fn) { var dataPara = getFormJson(frm); $.ajax({ url: frm.action, type: frm.method, data: dataPara, success: fn }); } function getFormJson(frm) { var o = {}; var a = $(frm).serializeArray(); $.each(a, function () { if (o[this.name] !== undefined) { if (!o[this.name].push) { o[this.name] = [o[this.name]]; } o[this.name].push(this.value || ''); } else { o[this.name] = this.value || ''; } }); return o; } $(document).ready(function () { $('#myForm').submit(function (event) { event.preventDefault(); ajaxSubmit(this, function (response) { console.log(response); }); }); }); </script> </body> </html> ``` 此方法定义了 `ajaxSubmit` 和 `getFormJson` 函数,将表单数据转换为 JSON 对象,使用 AJAX 提交表单,并在成功时执行回调函数[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值