Как контролировать состояние инвалидности входных данных HTML с помощью Javascript

Я пытался переключаться между состояниями инвалидности двух входов на моем веб-сайте с помощью кнопки, прикрепленной к некоторому JavaScript. В моем текущем коде используются две кнопки, которые отключают один ввод и включают другой, однако это не очень практично. Я хотел знать, как я могу использовать одну кнопку и один скрипт для циклического переключения между состояниями инвалидности моих входов, это мой текущий код:

<script>
function switch_monthlyexpense()
{
    document.getElementById("monthlyexpenses").disabled=false;
    document.getElementById("monthlypexpenses").disabled=true;

}

</script>

<script>
function switch_monthlypexpense()
{
    document.getElementById("monthlyexpenses").disabled=true;
    document.getElementById("monthlypexpenses").disabled=false;

}

</script>

<button class = "btn btn-primary" onclick = "switch_monthlyexpense()" id = "monthlyexpensestoggle">Expenses</button>
<button class = "btn btn-primary" onclick = "switch_monthlypexpense()" id = "monthlypexpensestoggle">P Expenses</button>


<form id = "expenses_form" style = "visibility:visible;">
   <div class = "form-group">
   <div class = "form-group col-md-1">
      <label for = "monthlyexpenses" id = "monthlyexpenseslabel">Monthly Expenses</label>
      <input type = "number" class = "form-control" id = "monthlyexpenses" placeholder = "0" disabled>
   </div>
       <span class = "input-group-text" id = "dsign5">$</span>
</form>



<form id = "pexpenses_form" style = "visibility:visible;">
   <div class = "form-group">
   <div class = "form-group col-md-1">
      <label for = "monthlypexpenses" id = "monthlypexpenseslabel">Monthly P Expenses</label>
      <input type = "number" class = "form-control" id = "monthlypexpenses" placeholder = "0">
   </div>
       <span class = "input-group-text" id = "psign4">%</span>
</form>

Всего одна кнопка и одна функция: document.getElementById("monthlyexpenses").disabled = !document.getElementById("monthlyexpenses").disabled;

GrafiCode 11.05.2022 12:52
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
26
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

disabled — это атрибут, поэтому вы можете установить его:

document.getElementById("myId").setAttribute('disabled', '');

И чтобы включить элемент:

document.getElementById("myId").removeAttribute('disabled');

Ваша первая функция будет выглядеть так:

function switch_monthlyexpense()
{
    document.getElementById("monthlyexpenses").removeAttribute('disabled');
    document.getElementById("monthlypexpenses").setAttribute('disabled', '');

}

Спасибо за решение, но это работает только для одного цикла, есть ли способ заставить его работать постоянно?

Commoq 11.05.2022 12:56
Ответ принят как подходящий
<script>
// use a variable to note which one is disabled
let selected = "monthlyexpenses"

function switchDisabled () {
    // toggle the from "monthlyexpenses" to "monthlypexpenses" or vice versa
    selected = selected === "monthlyexpenses" ? "monthlypexpenses" : "monthlyexpenses"
    
    // check if the DOM disabled state is the same as the selected
    document.getElementById("monthlyexpenses").disabled = selected === "monthlyexpenses";
    document.getElementById("monthlypexpenses").disabled = selected === "monthlypexpenses";

}

</script>

<button class = "btn btn-primary" onclick = "switchDisabled()" id = "switch-button">Switch</button>

<form id = "expenses_form" style = "visibility:visible;">
   <div class = "form-group">
   <div class = "form-group col-md-1">
      <label for = "monthlyexpenses" id = "monthlyexpenseslabel">Monthly Expenses</label>
      <input type = "number" class = "form-control" id = "monthlyexpenses" placeholder = "0" disabled>
   </div>
       <span class = "input-group-text" id = "dsign5">$</span>
</form>



<form id = "pexpenses_form" style = "visibility:visible;">
   <div class = "form-group">
   <div class = "form-group col-md-1">
      <label for = "monthlypexpenses" id = "monthlypexpenseslabel">Monthly P Expenses</label>
      <input type = "number" class = "form-control" id = "monthlypexpenses" placeholder = "0">
   </div>
       <span class = "input-group-text" id = "psign4">%</span>
</form>

Другие вопросы по теме