【问题标题】:How can I tell if the text was truncated when I copy a text into an input box with a maxlength attribute当我将文本复制到具有 maxlength 属性的输入框中时,如何判断文本是否被截断
【发布时间】:2012-10-22 19:22:01
【问题描述】:

HTML input 元素有一个 maxlength 属性,可以防止输入超过 maxlength 的文本。将文本粘贴到输入框中后,如果文本长度超过 maxlength,则会将其截断为 maxlength 的确切长度。请问如何判断文本是否被截断?

谢谢。

【问题讨论】:

    标签: javascript html input paste maxlength


    【解决方案1】:

    假设您想知道输入元素的值的长度是否与该元素的最大长度相同,您可以执行以下操作(使用 JQuery)。

    var $el =  $("#myInputElement")
    var l = $el.val().length;
    var ms = $el.attr("maxlength");
    var m = parseInt(ms, 10);
    
    // at this point m and l are maxlength and actual length
    

    然而,这与截断值不同,它可能只是那个精确的长度。

    如果您想知道用户在达到最大长度后是否仍在写作,您可以使用查看 keyup 事件以及输入是否获得焦点。但是,要将剪贴板与您的输入进行比较,您可能不得不求助于 Flash。

    总之,没有好的解决办法。

    【讨论】:

    • 我愿意使用 JavaScript。但是,我想知道的是,当输入长度正好是最大长度时,文本是否是从其他地方的较长文本中复制出来的。可能在发送表单之前没有比较长度,希望我能在粘贴文本后立即知道。是的,我们确信如果长度更小,它一定不能被截断。当长度正好是最大长度时怎么样?
    • @WawaBrother 更新了你的澄清答案,但有人反对我太慢了!
    • 感谢您的回答。好吧,我也很惊讶看到如此迅速的否决票。不是我,一定是别人。 :)
    • @WawaBrother 如果您需要任何澄清,请告诉我,但是我在 JSFIddle 中尝试过,效果很好
    • @WawaBrother 正如我之前解释的那样,没有办法真正知道用户是否打算输入更多文本。我想你可以去掉 maxlength 属性,然后使用 javascript 截断。这样你就可以得到整个文本,并且能够知道你什么时候截断
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    相关资源
    最近更新 更多