【发布时间】: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() + "-");
html = "" + $("#input-box").html();
}
})
一件奇怪的事情:如果我将长度参数从“5”和“9”更改为“4”和“8”,代码将减去连字符。但这并不理想,因为它会在 #input-box 中留下一个悬空的连字符,直到您添加或减去另一个数字。
【问题讨论】:
-
jQuery 不是 Javascript —— 而
substr是一个 Javascript 字符串方法。首先学习可能会为您带来不同的世界。 -
@GeorgeJempty 我已更新标题以反映这一点。现在,这些信息如何帮助回答我的问题?
-
有许多免费的 jQuery 电话号码“掩码”插件。如果你想自己动手,我建议使用open source ones as an example 之一。由于您使用的是 jQuery,因此您应该利用可用的实用程序。
-
我建议您使用示例中的代码来修改您当前的代码 - 在这种情况下,
input或div之间的区别是微不足道的。 -
“这些信息如何帮助回答我的问题”——它可以帮助你知道在哪里可以找到 `substr 的文档
标签: jquery substr string-length