Как отключить поле ввода с помощью Javascript?
Я начинаю с Javascript, я написал эту функцию:
function disableField() {
if( document.getElementById("valorFinal").length > 0 ) ) {
document.getElementById("cantidadCopias").disabled = true;
}
}
Отключает второе поле с именем cantidadCopias, если первое заполняется.
<label> <span>Valor final:</span>
<input type="text" class="input_text" name="valorFinal" id="valorFinal" onkeydown="disableField()"/>
</label>
<label> <span>Cantidad de Copias:</span>
<input type="text" class="input_text" name="cantidadCopias" id="cantidadCopias"/>
</label>
Но это не отключает второе поле при заполнении первого.
Ответы
Ответ 1
Вы посмотрели консоль?
- Uncaught SyntaxError: Неожиданный токен)
- Uncaught ReferenceError: disableField не определен
В первый раз, когда у вас была орфографическая ошибка, теперь ваш код имеет дополнительный )
function disableField() {
if( document.getElementById("valorFinal").length > 0 ) ) { <-- extra )
document.getElementById("cantidadCopias").disabled = true;
}
}
Теперь следующая проблема заключается в том, что вы не смотрите на длину значения.
if( document.getElementById("valorFinal").length > 0 ) <-- you are looking at the length of the HTML DOM Node.
Таким образом, код должен выглядеть как
function disableField() {
if( document.getElementById("valorFinal").value.length > 0 ) {
document.getElementById("cantidadCopias").disabled = true;
}
}
но теперь, как он написан, после его отключения он не будет повторно включен.
function disableField() {
var isDisabled = document.getElementById("valorFinal").value.length > 0;
document.getElementById("cantidadCopias").disabled = isDisabled;
}
Ответ 2
Лучше всего использовать onkeyup()
вместо onkeydown()
. Проблема заключается в том, что значение ввода не обновляется при событии keydown.
Fiddle
<label>
<span>Valor final:</span>
<input type="text" class="input_text" name="valorFinal" id="valorFinal" onkeyup="disableField(this.value)"/>
</label>
<label>
<span>Cantidad de Copias:</span>
<input type="text" class="input_text" name="cantidadCopias" id="cantidadCopias"/>
</label>
Javascript
function disableField(val) {
var cantidadCopias = document.getElementById("cantidadCopias");
cantidadCopias.disabled = ( val.length > 0 )? true:false;
}
Ответ 3
javascript:
var disableField = function () {
var state = document.getElementById("valorFinal").value.length > 0;
document.getElementById("cantidadCopias").disabled = state;
};
html:
<label> <span>Valor final:</span>
<input type="text" class="input_text" name="valorFinal" id="valorFinal" onkeyup="disableField()"/>
</label>
<label> <span>Cantidad de Copias:</span>
<input type="text" class="input_text" name="cantidadCopias" id="cantidadCopias"/>
</label>
вы также должны включить его снова, когда длина ввода снова будет 0.
кроме того, что вы должны перехватывать onkeyup, а не onkeydown.
вы можете попробовать его здесь: jsfiddle.net/DBJfN/