You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在jQuery Validation的rules中判断点击的提交按钮

解决jQuery Validation规则中判断点击提交按钮的问题

直接上可行方案,不用改按钮类型,也能让rules里拿到点击的按钮标识:

  1. 添加隐藏字段存储操作类型
    在表单里加一个隐藏输入框,用来记录用户点击的是提交还是保存草稿:

    <input type="hidden" id="actionType" name="actionType">
    
  2. 绑定提交按钮的点击事件,提前设置标识
    给所有提交类型的按钮绑定点击事件,在验证触发前把按钮的name值存入隐藏字段:

    $('button[type="submit"]').click(function() {
      $('#actionType').val($(this).attr('name'));
    });
    

    注意这段代码要放在表单初始化验证之前,或者包裹在DOM ready回调里。

  3. 在rules中动态判断必填条件
    给certifyStmt字段的required规则用函数形式,根据隐藏字段的值动态返回是否需要必填:

    $('#yourFormId').validate({
      rules: {
        certifyStmt: {
          required: function() {
            // 替换成你实际的提交按钮name,比如"submit"
            return $('#actionType').val() === "submit";
          }
        }
      },
      submitHandler: function(form) {
        // 这里依然可以用你之前的方式确认按钮
        console.log($(this.submitButton).attr('name'));
        form.submit();
      }
    });
    

为什么之前的隐藏字段方案没生效?

大概率是事件绑定时机不对,或者验证触发时隐藏字段还没被赋值。直接绑定submit按钮的click事件,会在Validation的验证逻辑之前执行,确保rules读取时已经拿到了正确的按钮标识。另外,不要在rules里尝试用this.submitButton——这个是submitHandler阶段才会被赋值的内部属性,验证阶段根本拿不到值。

内容的提问来源于stack exchange,提问作者gene b.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 07:50:25