Как можно настроить плагин 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` может быть важной частью использования масок, так как она помогает пользователю понимать, что нужно вводить в поле. Таким образом, вместо пустой строки можно указать логичное значение.
Да просто доработайте маску и всё: <br/> <br/> <code class="javascript">$("input[name=phone]").mask("+?99999999999");</code> <br/> <br/> Если прям хотите изощриться, то можно использовать более сложный шаблон: <br/> <br/> <pre><code class="javascript">$("input[name=phone]").mask("A9999999999", {
translation: {
'A': { pattern: /[0-9+]/ }
}
});</code></pre>
В этой самой маске столько косяков и мелей, что сразу может и крыша поехать. У меня сейчас вот такое чудище стоит <pre><code class="javascript">$("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);
}
})</code></pre> <br/> Пояснения: <br/>