【问题标题】:substr() fails when hyphen last character连字符最后一个字符时 substr() 失败
【发布时间】:2018-10-06 10:51:55
【问题描述】:

我正在创建一个网站,用户可以在其中单击看起来像电话拨号盘的 DIV。当有 3 或 7 个字符时,我添加一个连字符来模拟电话号码的外观。

但是,当他们按下退格键时,它不会减去连字符。

这是我的代码,删除了所有不必要的代码:

$(".phone_digit").click(function(e){

    var html = "" + $("#input-box").html();

    if( event.target.id == "phone_delete" ){

        if( ( html.length === 5 ) || ( html.length === 9 ) ) {
            $("#input-box").html( html.substr(0, html.length - 2 ) );
        } else {
            $("#input-box").html( html.substr(0, html.length - 1 ) );
        }

        html = "" + $("#input-box").html();

    } else if ($("#input-box").html().length < 12) {
        $("#input-box").html( html + "" + $("#" + event.target.id).html() );
        html = "" + $("#input-box").html();
    }

    if( ( $("#input-box").html().length === 3 ) || ( html.length === 7 ) ) {
        $("#input-box").html( $("#input-box").html() + "&#45;");
        html = "" + $("#input-box").html();
    }
})

一件奇怪的事情:如果我将长度参数从“5”和“9”更改为“4”和“8”,代码将减去连字符。但这并不理想,因为它会在 #input-box 中留下一个悬空的连字符,直到您添加或减去另一个数字。

这是一个小提琴: https://jsfiddle.net/mediocreb/t66jf0t4/3/

【问题讨论】:

  • jQuery 不是 Javascript —— 而 substr 是一个 Javascript 字符串方法。首先学习可能会为您带来不同的世界。
  • @GeorgeJempty 我已更新标题以反映这一点。现在,这些信息如何帮助回答我的问题?
  • 有许多免费的 jQuery 电话号码“掩码”插件。如果你想自己动手,我建议使用open source ones as an example 之一。由于您使用的是 jQuery,因此您应该利用可用的实用程序。
  • 我建议您使用示例中的代码来修改您当前的代码 - 在这种情况下,inputdiv 之间的区别是微不足道的。
  • “这些信息如何帮助回答我的问题”——它可以帮助你知道在哪里可以找到 `substr 的文档

标签: jquery substr string-length


【解决方案1】:

它正在工作,但您的条件已关闭。您可以很好地删除连字符,但随后您将其放回最后的“if”块中。

将您的最终“else”改为这样检查:

  if (event.target.id !== "phone_delete" && (($("#input-box").html().length === 3) || (html.length === 7))) {

【讨论】:

  • 非常感谢!出于某种原因,您的确切代码不起作用。但根据您的逻辑,我将最后一个“if”语句放在最后一个“else if”语句中,效果很好。
  • 很抱歉,您的代码确实有效!我只是忘记了 OR 语句。再次感谢!
  • 很高兴它的工作!祝您网站的其他部分好运!
猜你喜欢
  • 1970-01-01
  • 2016-05-06
  • 2013-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-11
  • 2015-10-17
  • 2022-06-17
相关资源
最近更新 更多