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

jQuery绘制圆形功能如何正确识别用户输入的小数值

问题原因

小数被截断为整数的核心原因是代码使用 parseInt() 解析输入值:parseInt() 只会将输入解析为整数,解析到小数点这类非整数字符时就会终止,直接返回已解析的整数部分,因此输入5.68时仅会得到5。

修复方式

将两处获取输入值的 parseInt() 替换为 parseFloat() 即可,parseFloat() 方法可以正确解析带小数的浮点数,不会截断小数部分。
修改后的可运行代码:

$(function() {
  $('.circle').hide();
  $('#outer_diameter').on('change', function() {
    var $outer_diameter = parseFloat($("#outer_diameter").val());
    // 非数字输入拦截(可选优化)
    if (isNaN($outer_diameter)) {
      $('#error').show();
      return;
    }
    var $converted = $outer_diameter * 10;
    console.log($outer_diameter, $converted);
    $('.circle').css({
      height: 2 * $converted,
      width: 2 * $converted,
      top: "calc(50% - " + $converted + "px)",
      left: "calc(50% - " + $converted + "px)"
    });
    $('.circle').fadeIn(300);
    $('#error').hide();
  })

  $('.circle2').hide();
  $('#inner_diameter').on('change', function() {
    var $inner_diameter = parseFloat($("#inner_diameter").val());
    // 非数字输入拦截(可选优化)
    if (isNaN($inner_diameter)) return;
    var $converted_2 = $inner_diameter * 10;
    console.log($inner_diameter, $converted_2);
    $('.circle2').css({
      height: 2 * $converted_2,
      width: 2 * $converted_2,
      top: "calc(50% - " + $converted_2 + "px)",
      left: "calc(50% - " + $converted_2 + "px)"
    });
    $('.circle2').fadeIn(300);
  })
});

代码中新增的非数字输入拦截是可选优化项,用来避免用户输入非数值内容时出现渲染异常,不需要可以直接删除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 20:12:26