Я пытаюсь отключить/включить строку ввода, нажав кнопку
Я могу вручную ввести слово «закрыто» в строке ввода, и оно работает нормально, но я не могу заставить «закрыто» войти с помощью кнопки
var obj = document.getElementById("state");
obj.onchange = function(status){
if (this.value= = "closed"){
document.getElementById("test").disabled = 'disabled';
}else{
document.getElementById("test").disabled = '';
}
} <button id = "state" name = "state" type = "submit" value = "open">open</button>
<button id = "state" name = "state" type = "submit" value = "closed">closed</button>
<input id = "test"/>Строка ввода id=state работает нормально, но ничего не происходит, когда я нажимаю кнопки
Есть две кнопки с одинаковыми идентификаторами. Обратите внимание, что атрибут ID элемента html уникален и не должен дублироваться, поэтому это даст неопределенный результат.
Также, если вы поместите их в форму, страница будет перезагружена без preventDefault



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Возможно, вы хотите переключатель?
window.addEventListener("load", function() {
document.getElementById("state").addEventListener("click", function(e) {
e.preventDefault(); // not really needed on type = "button"
var closed = this.value == "closed";
this.value = this.innerText = closed ? "open" : "closed";
document.getElementById("test").disabled = closed;
})
})<button id = "state" name = "state" type = "button" value = "open">open</button>
<input id = "test" />Попробуйте что-то вроде этого,
var buttonClick = function(status) {
if (status == "closed") {
document.getElementById("test").disabled = true;
} else {
document.getElementById("test").disabled = false;
}
}<button id = "openState" name = "OpenState" type = "submit" value = "open" onclick = "buttonClick(value)">open</button>
<button id = "closedState" name = "ClosedState" type = "submit" value = "closed" onclick = "buttonClick(value)">closed</button>
<input id = "test" />Меня поражает, что это действительно работает. Таким образом, встроенный обработчик фактически отправляет значение в вашей конструкции!!!
Есть несколько вещей, которые следует учитывать:
ID (состояние)onChange, а на onClickonClickfunction disableInput(disabled){
document.getElementById("test").disabled = disabled
}<button onClick = "disableInput(false)">open</button>
<button onClick = "disableInput(true)">closed</button>
<input id = "test" />Да, вы можете, но это не рекомендуется. Что нового привносит этот ответ в вопрос?
Это приносит радость, цветы и простое решение, которое работает, для ОП, который еще не находится на том уровне, когда он хочет услышать о ненавязчивом javascript.
у вас есть более одного элемента с одним и тем же идентификатором (то есть id = «состояние»). Вы должны вообще избегать этого конфликта.