Query EasyUI 表单 – 创建异步提交表单

jQuery EasyUI 表单 – 创建异步提交表单(Ajax 提交)

jQuery EasyUI 提供了 form 插件validatebox 等组件,支持表单验证和异步(Ajax)提交。最常用的异步提交方式有两种:

  1. 使用 form 插件的 ajax 选项(推荐,简单)
  2. 使用 submit 方法结合 onSubmit 和手动 $.ajax

下面提供完整示例,包括表单验证、加载动画、成功/失败提示。

示例1:最简单异步提交(推荐)

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>EasyUI 异步提交表单</title>
    <link rel="stylesheet" type="text/css" href="https://www.jeasyui.com/easyui/themes/default/easyui.css">
    <link rel="stylesheet" type="text/css" href="https://www.jeasyui.com/easyui/themes/icon.css">
    <script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
    <script type="text/javascript" src="https://www.jeasyui.com/easyui/jquery.easyui.min.js"></script>
</head>
<body>
    <h2>EasyUI 异步提交表单示例</h2>

    <div style="padding:20px;">
        <form id="ff" class="easyui-form" method="post" 
              data-options="novalidate:true">
            <div style="margin-bottom:20px">
                <input class="easyui-textbox" name="name" style="width:100%" 
                       data-options="label:'姓名:',required:true">
            </div>
            <div style="margin-bottom:20px">
                <input class="easyui-textbox" name="email" style="width:100%" 
                       data-options="label:'Email:',required:true,validType:'email'">
            </div>
            <div style="margin-bottom:20px">
                <input class="easyui-textbox" name="subject" style="width:100%" 
                       data-options="label:'主题:',required:true">
            </div>
            <div style="margin-bottom:20px">
                <input class="easyui-textbox" name="message" style="width:100%;height:100px" 
                       data-options="label:'内容:',multiline:true,required:true">
            </div>
            <div style="text-align:center;padding:10px">
                <a href="javascript:void(0)" class="easyui-linkbutton" 
                   onclick="submitForm()">提交</a>
                <a href="javascript:void(0)" class="easyui-linkbutton" 
                   onclick="clearForm()">重置</a>
            </div>
        </form>
    </div>

    <script type="text/javascript">
        function submitForm(){
            $('#ff').form('submit', {
                url: 'form_submit.php',  // 服务器处理脚本
                ajax: true,              // 启用异步提交(关键)
                onSubmit: function(){
                    // 提交前进行表单验证
                    var isValid = $(this).form('validate');
                    if (!isValid){
                        $.messager.alert('提示','请填写完整信息!');
                    }
                    return isValid;      // 返回 false 将阻止提交
                },
                success: function(data){
                    var data = eval('(' + data + ')');  // 解析 JSON
                    if (data.success){
                        $.messager.alert('成功', data.message, 'info');
                        $('#ff').form('clear');
                    } else {
                        $.messager.alert('错误', data.message, 'error');
                    }
                }
            });
        }

        function clearForm(){
            $('#ff').form('clear');
        }
    </script>
</body>
</html>

示例2:更完整的版本(带加载遮罩)

function submitForm(){
    $('#ff').form('submit', {
        url: 'form_submit.php',
        ajax: true,
        onSubmit: function(param){
            var isValid = $(this).form('validate');
            if (isValid){
                $.messager.progress({               // 显示进度条
                    title: '请稍等',
                    msg: '正在提交数据...'
                });
            }
            return isValid;
        },
        success: function(data){
            $.messager.progress('close');           // 关闭进度条
            try {
                var result = $.parseJSON(data);
                if (result.success){
                    $.messager.alert('成功', result.message || '提交成功!', 'info');
                    $('#ff').form('clear');
                } else {
                    $.messager.alert('失败', result.message || '提交失败!', 'error');
                }
            } catch(e) {
                $.messager.alert('错误', '服务器返回格式错误', 'error');
            }
        },
        error: function(){
            $.messager.progress('close');
            $.messager.alert('错误', '网络请求失败!', 'error');
        }
    });
}

服务器端示例(form_submit.php)

<?php
sleep(1); // 模拟处理延迟

// 获取表单数据
$name    = $_POST['name'] ?? '';
$email   = $_POST['email'] ?? '';
$subject = $_POST['subject'] ?? '';
$message = $_POST['message'] ?? '';

if (empty($name) || empty($email) || empty($subject) || empty($message)) {
    echo json_encode(['success' => false, 'message' => '数据不完整']);
    exit;
}

// 这里进行实际处理(如保存到数据库)

echo json_encode([
    'success' => true,
    'message' => '表单提交成功!姓名:' . $name
]);
?>

关键属性说明

  • ajax: true:启用异步提交(EasyUI 1.5+ 支持)
  • onSubmit:提交前调用,返回 false 可阻止提交,常用于验证
  • success:服务器返回数据后的回调(注意:返回字符串,需要手动 evalparseJSON
  • validate:使用 EasyUI 的内置验证规则(如 required, email 等)

官方参考

  • Form 插件文档:https://www.jeasyui.com/documentation/form.php
  • Ajax Form Demo:https://www.jeasyui.com/demo/main/index.php?plugin=Form&theme=default&dir=ltr&pitem=Ajax%20Submit

如果需要结合 dialog 窗口提交、文件上传(easyui-filebox)、或复杂验证规则,请告诉我!

文章已创建 3285

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部