substr () завершается неудачно, когда дефис последний символ - PullRequest
0 голосов
/ 25 апреля 2018

Я создаю сайт, где пользователи нажимают на 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/

1 Ответ

0 голосов
/ 26 апреля 2018

Работает, но ваши условия выключены.Вы просто удаляете дефис, но затем помещаете его обратно в свой последний блок «if».

Измените свой последний «else», чтобы вместо этого проверить:

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