Не работает маска ввода

284
01 февраля 2018, 16:57

Есть некий select, от выбора которого зависит какие 2 инпута будут выведены.

                        <select name="auth-select" id="auth-select"></p>
                        <option value="login" class="opt-login">Логин и пароль</option>
                        <option value="email" class="opt-email">Email и пароль</option>
                        <option value="phone" class="opt-phone">Номер телефона и пароль</option>
                        <option value="card" class="opt-card">№Карты и пин код</option>
                        </select>

К нему скрипт вывода этих инпутов

<script>
 $(document).ready(function(){
$('#auth-select').change(function(){
    if ($('#auth-select option:selected').hasClass("opt-login")) {
        $("#select-div").html("<input id='login' type='text' name='login' \
           class='enter-login' required> \
          <input id='pass' type='text' name='pass' class='enter-login'> \
          <button>SEND</button>")
} elseif ($("#auth-select option:selected").hasClass("opt-email")) {
        $("#select-div").html(..........................

ну и так далее. Скрипт работает. Все меняется как надо.

Только вот под эти инпуты еще стоит скрипт маски ввода. Что-то типа:

<script>
            $(document).ready(function() {
                $("#pin").inputmask("9999");
                $("#phone").inputmask("+7(999)9999999");
                ..................
                ..................
 </script>

Много масок. На других страницах, на чистом HTML все маски работают. Тут же не хочет. Подскажите в чем может быть дело. И как можно сделать, чтобы и селект был и маска работала.

Answer 1

У вас инициализация масок происходит после $(document).ready(function() { в этот момент инпутов с такими id просто не существует. Вешайте маски после создания инпутов:

$(document).ready(function() {
      $('#auth-select').change(function() {
            if ($('#auth-select option:selected').hasClass("opt-login")) {
              $("#select-div").html("<input id='login' type='text' name='login' \
                class='enter-login' required> \
                <input id='pass' type='text' name='pass' class='enter-login'> \
                <button>SEND</button>")
                $("#pin").inputmask("9999");
                $("#phone").inputmask("+7(999)9999999");
            }
            elseif($("#auth-select option:selected").hasClass("opt-email")) {
                $("#select-div").html(..........................
READ ALSO
Как сделать блок ссылкой?

Как сделать блок ссылкой?

Заказчику срочно понадобилось, чтобы блок стал ссылкой, но внутри этого блока есть и куча разметки, в том числе, и самостоятельных тегов <a>В...

229
Загрузить HTML из файла в JavaScript

Загрузить HTML из файла в JavaScript

Я использую AngularJS В одном из сервисов, который используется для построения уведомлений, у меня есть следующий шаблон:

222
расшифровать параметры фотошопа в css [требует правки]

расшифровать параметры фотошопа в css [требует правки]

Скажите, пожалуйста, как написать в css

284
Проблема с формой в расширении Chrome

Проблема с формой в расширении Chrome

Добрый день, уважаемые коллеги!

230