20

我从 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>

但是当第一个字段被填充时,它不会禁用第二个字段。

4

3 回答 3

29

你看控制台了吗?

  • Uncaught SyntaxError: Unexpected token )
  • 未捕获的 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;
}​
于 2012-10-15T13:38:06.590 回答
2

最好使用onkeyup()而不是onkeydown(). 问题是输入的值没有在 keydown 事件上更新。

小提琴

<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  );
}
于 2012-10-15T13:48:04.090 回答
1

的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/

于 2012-10-15T13:43:19.790 回答