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

将this.value赋值给变量x后,input输入长度限制函数失效问题

问题原因分析

你的代码失效的核心原因是:字符串属于值类型,当你执行 let x = object.value 时,x 只是 object.value 的一个副本,后续修改 x 的值完全不会同步到原输入框的 value 属性上。

看你的代码细节:

function maximum(object) {
    const maxlength = 2;
    let x = object.value; // x是object.value的独立副本
    if (x.length > maxlength) {
        x = x.slice(0, maxlength); // 只修改了副本x,原输入框的value毫无变化
    }
}

你只是把截断后的结果存在了变量x里,但从来没把这个结果赋值回输入框的value,所以输入框的内容自然不会被限制。

再对比能正常运行的代码:

function maxLengthCheck(object) {
    if (object.value.length > object.max.length)
      object.value = object.value.slice(0, object.max.length) // 直接修改输入框的value属性
}

这段代码是直接把截断后的字符串赋值给object.value,也就是直接修改了输入框的实际内容,所以能起到限制输入长度的作用。

修复你的代码

只需要在截断x之后,把x赋值回object.value即可:

function maximum(object) {
    const maxlength = 2;
    let x = object.value;
    if (x.length > maxlength) {
        x = x.slice(0, maxlength);
        object.value = x; // 关键步骤:把截断后的值同步回输入框
    }
}
额外提示

对于type="number"的输入框,有个小细节:当用户输入非数字内容时,object.value会变成空字符串,但你的逻辑本身不受这个场景影响。另外,HTML原生的maxlength属性在number类型输入框上,部分浏览器可能不生效,所以用JS拦截是更可靠的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 23:33:07