проблема с преобразованием числа в формат - PullRequest
0 голосов
/ 13 июля 2020

Я хочу преобразовать свой номер в формат XXXXX-XXXX-XX, и я пытаюсь использовать для этого Jsfiddle , но с какими изменениями я могу получить формат XXXXX-XXXX-XX.

    var format = function(num){
    var str = num.toString().replace("$", ""), parts = false, output = [], i = 1, formatted = null;
    if(str.indexOf(".") > 0) {
        parts = str.split(".");
        str = parts[0];
    }
    str = str.split("").reverse();
    for(var j = 0, len = str.length; j < len; j++) {
        if(str[j] != ",") {
            output.push(str[j]);
            if(i%4 == 0 && j < (len - 1)) {
                output.push(",");
            }
            i++;
        }
    }
    formatted = output.reverse().join("");
    return("$" + formatted + ((parts) ? "." + parts[1].substr(0, 2) : ""));
};
$(function(){
    $("#currency").keyup(function(e){
        $(this).val(format($(this).val()));
    });
});

тоже, но тоже не работает.

1 Ответ

1 голос
/ 13 июля 2020

Комментарии, которые просят вас немного лучше объяснить свой код, скорее всего, связаны с тем, что в вашей функции форматирования есть много избыточностей, которые не имеют смысла для вашей конкретной c проблемы. (Возможно, это скопированный код, который вы пытались настроить в соответствии с вашими потребностями)

Если вы хотите ввести строку формата XXXXXXXXXX и автоматически отформатировать ее до XXXXX-XXXXX-XX, вам нужно будет ограничить число символов до 10 и вставлять - после каждого 4-го символа.

Также подумайте об ограничении символов, разрешенных в вашей строке. например, только цифры или только цифры + A-Za-z в зависимости от ваших потребностей, если вы хотите предотвратить использование нежелательных символов, таких как , или @

function format( val ) {
    let num = val.replace(/\-/g, '').split('');
  let output = "";
  let numPos = 1;
  let maxChars = 10;
  for(var i = 0; i < num.length && i < maxChars; i++) {
    output += num[i];
    if(numPos%4 == 0 && i < (num.length - 1)) {
      output += "-";
    }
    numPos++;
  }
  return output;
}

$('input').on('input', function() {
    $(this).val( format( $(this).val() ) );
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...