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

Gravity Form中通过jQuery实现mm与cm单位转换的问题求解

错误原因
  • 选择器大小写不匹配:你备注中单选按钮的类名为.Select_unit,代码中写为.Select_Unit,JS选择器大小写敏感,导致无法正确绑定切换事件
  • 单选按钮name属性选择器写法错误:$('input[name="#input_2_3"]:checked')中name属性值不需要加#前缀,#是id选择器的专属标识,错误写法会导致无法获取选中的单选按钮值
  • 转换逻辑有缺陷:仅在输入时存储原始值,未考虑不同单位下输入的场景,切换单位时容易出现计算偏差;未做非空、非数字校验,输入为空时转换会出现NaN
  • 输入监听事件覆盖不全:仅监听keyup事件,无法覆盖用户粘贴、拖拽输入等场景,建议替换为input事件
  • 缺少精度处理:单位转换后可能出现多位小数,无精度处理会导致数值显示不规范
正确实现代码
$(function() {
    var W_val, H_val;
    var currentUnit = 'mm'; // 可根据表单默认选中的单位调整初始值

    // 监听宽度输入
    $('#input_2_1').on('input', function() {
        W_val = $(this).val();
    });

    // 监听高度输入
    $('#input_2_2').on('input', function() {
        H_val = $(this).val();
    });

    // 单位切换事件
    $('.Select_unit input[type="radio"]').on('change', function() {
        var radioValue = $('input[name="input_2_3"]:checked').val();
        // 非数字/空值直接返回避免报错
        if (!W_val || !H_val || isNaN(W_val) || isNaN(H_val)) return;
        
        if (radioValue === 'cm' && currentUnit === 'mm') {
            // mm转cm除以10,保留1位小数
            $("#input_2_1").val((parseFloat(W_val) / 10).toFixed(1));
            $("#input_2_2").val((parseFloat(H_val) / 10).toFixed(1));
            currentUnit = 'cm';
        } else if (radioValue === 'mm' && currentUnit === 'cm') {
            // cm转mm乘以10
            $("#input_2_1").val(parseFloat(W_val) * 10);
            $("#input_2_2").val(parseFloat(H_val) * 10);
            currentUnit = 'mm';
        }
    });
});
更精简的实现方案

不需要单独存储输入值变量,切换时直接读取当前输入框的值做转换,代码更简洁:

$(function() {
    const $width = $('#input_2_1'), $height = $('#input_2_2');
    // 直接绑定单选按钮切换事件
    $('.Select_unit input[type="radio"]').on('change', function() {
        const targetUnit = $(this).val();
        // 非数字校验跳过转换
        if (isNaN($width.val()) || isNaN($height.val())) return;
        // 转换系数:切cm除以10,切mm乘以10
        const ratio = targetUnit === 'cm' ? 0.1 : 10;
        // 按单位控制小数位数
        const fixed = targetUnit === 'cm' ? 1 : 0;
        $width.val((parseFloat($width.val()) * ratio).toFixed(fixed));
        $height.val((parseFloat($height.val()) * ratio).toFixed(fixed));
    });
});

Gravity Form界面参考:
Gravity Form界面

内容的提问来源于stack exchange,提问作者Manouchehr Tizkhan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:48:00