Как можно настроить плагин jQuery Masked Input Plugin так, чтобы в начале ввода можно было использовать любой символ, в том числе "+" или любую цифру? Сейчас у меня установлена такая маска: <br/> <code>$("input[name=phone]").mask("99999999999");</code> <br/> Но мне нужно, чтобы первая позиция принимала символ плюс "+".
Для того чтобы настроить маску таким образом, чтобы первая позиция принимала любой символ, включая "+" или цифры, можно воспользоваться функцией `mask` и использовать специальный шаблон. В `jQuery Masked Input Plugin` можно указать альтернативные символы через флаг `?`. В вашем случае, поскольку требуется заменить первую позицию, вы можете написать маску, которая сначала принимает "+" или "9" (для цифр). Вот пример, как это можно сделать: ```javascript $("input[name=phone]").mask("+99999999999", { placeholder: "" }); ``` или, если вы хотите, чтобы входил любой символ в первой позиции, попробуйте: ```javascript $("input[name=phone]").mask("A9999999999", { placeholder: "" }); ``` Где `A` это символ, который позволит вводить любой символ, включая "+" или любую цифру. Если требуется более тонкая настройка маски (чтобы в первую позицию разрешали только плюс или цифры), возможно, потребуется использовать регулярные выражения для проверки дополнительных условий ввода. Но в зависимости от реализации плагина mask может не поддерживать такую функцию напрямую. Также, стоит обратить внимание, что настройка `placeholder` может быть важной частью использования масок, так как она помогает пользователю понимать, что нужно вводить в поле. Таким образом, вместо пустой строки можно указать логичное значение.
Да просто доработайте маску и всё:
$("input[name=phone]").mask("+?99999999999");
Если прям хотите изощриться, то можно использовать более сложный шаблон:
$("input[name=phone]").mask("A9999999999", { translation: { 'A': { pattern: /[0-9+]/ } } });
В этой самой маске столько косяков и мелей, что сразу может и крыша поехать. У меня сейчас вот такое чудище стоит$("input[type='tel']").each(function(){ if(!this.inputmask) { // ставили уже ? let mask="+7 (999) 999-99-99[999]"; // 6 - 3-я 9-ка, 9-4-z 9-rf, 10-5. function oninput(){ const wphoneValue = jQuery(this).val().replace(/\D/g, ''); if (wphoneValue.length >= 4) { const firstThreeDigits = parseInt(wphoneValue.substring(1, 4)); if(firstThreeDigits>699 && firstThreeDigits<900 && firstThreeDigits!==812){ // remove first letter from value jQuery(this).val(jQuery(this).val().replace(/\+7 \([78]/,'+7 (')); let pos=0; for(let x=wphoneValue.length;x>1;x--){ pos=mask.indexOf('9', pos+1); } this.setSelectionRange && this.setSelectionRange(pos,pos,"forward"); } } } $(this).on('input', oninput) .inputmask({ "mask": mask, skipOptionalPartCharacter: " ", placeholder: "_", autoclear: false, onBeforePaste: function (pastedValue, opts) { pastedValue = pastedValue.toLowerCase().replace(/\D/g, '').replace(/7(\d{10})/, '$1').replace(/8(\d{10})/, '$1'); return pastedValue; } }) var that=this; setTimeout(function(){oninput.call(that)},10); } })
Пояснения: