Невозможно отключить ввод текста на основе выбора выпадающего списка - PullRequest
0 голосов
/ 15 июня 2019

У меня есть HTML-форма с выпадающим списком:

<select id="pjsaupf" name="pjsaupf" onChange="changeState()">
        <option value="nu">Nu se aplica</option>
        <option value="pfa">Persoana Fizica Autorizata PFA</option>
        <option value="pja">Persoana Juridica Autorizata PJA</option>   
</select>

- также пробовал с onchange вместо onChange.Ничего не изменилось.

И я хочу, чтобы при выборе опции со значением «nu» была отключена следующая текстовая форма, а при выборе «pfa» или «pja»:

<input type="text" id="company" name="company" class="form-control" placeholder="Companie" disabled>

Я перепробовал много javascript-кодов, выложу самые актуальные.Проблема в том, что когда я выбираю «nu», «компания» отключается, и это нормально, когда я выбираю «pja», он включается, и это нормально, но когда я выбираю «pfa», он отключается, нодолжен быть включен здесь .. не выяснить, что не так ..

коды JavaScript:

<script>
function changeState() {
    if(document.getElementById("pjsaupf").value == "nu") {
        document.getElementById("company").disabled=true;
    }else

    if(document.getElementById("pjsaupf").value == "pfa") {
        document.getElementById("company").disabled=false;
    }
    else
    if(document.getElementById("pjsaupf").value == "pja") {
    document.getElementById("company").disabled=false;
    } 
}
</script>

и альтернативный код:

<script>
var select = document.getElementById('pjsaupf');

function changeState() {
    switch (this.value) {
        case '1':
            document.getElementById("company").disabled=true;
            break;
        case '2':
            document.getElementById("company").disabled=false;
            break;
        case '3':
            document.getElementById("company").disabled=false;
            break;
    }
}

select.addEventListener('change', changeState);

</script>

РЕДАКТИРОВАТЬ: Я бегу на localhost

enter image description here

enter image description here

Ответы [ 2 ]

1 голос
/ 16 июня 2019

Кажется, он работает как есть, однако я хотел бы предложить более упорядоченный подход:

function changeState() {
  // this one Boolean comparison is the value you need
  document.getElementById("company").disabled = (document.getElementById("pjsaupf").value == "nu");
}
<select id="pjsaupf" name="pjsaupf" onChange="changeState()">
  <option value="nu">Nu se aplica</option>
  <option value="pfa">Persoana Fizica Autorizata PFA</option>
  <option value="pja">Persoana Juridica Autorizata PJA</option>
</select>

<input type="text" id="company" name="company" class="form-control" placeholder="Companie" disabled>
1 голос
/ 15 июня 2019

Я попробовал ваш код, и кажется, что все работает нормально.Когда вы выбираете nu, company отключается.При выборе pfa или pja включается company.

Попробуйте запустить тот же код в режиме инкогнито.Я думаю, что ваш javascript кешируется вашим браузером и не обновляется с последним кодом.

Ниже приведена демонстрационная версия:

function changeState() {
    if(document.getElementById("pjsaupf").value == "nu") {
        document.getElementById("company").disabled=true;
    }else

    if(document.getElementById("pjsaupf").value == "pfa") {
        document.getElementById("company").disabled=false;
    }
    else
    if(document.getElementById("pjsaupf").value == "pja") {
    document.getElementById("company").disabled=false;
    } 
}
<select id="pjsaupf" name="pjsaupf" onChange="changeState()">
        <option value="nu">Nu se aplica</option>
        <option value="pfa">Persoana Fizica Autorizata PFA</option>
        <option value="pja">Persoana Juridica Autorizata PJA</option>   
</select>

<input type="text" id="company" name="company" class="form-control" placeholder="Companie" disabled>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...