【问题标题】:Enable an HTML form text box based on the value of a drop down menu in the same form?根据同一表单中下拉菜单的值启用 HTML 表单文本框?
【发布时间】:2013-07-23 21:05:56
【问题描述】:

我是 HTML 新手,我知道这个问题已经在这里被问过好几次了,但我已经尝试了所有各种解决方案,但没有一个对我有用。当从下拉菜单中选择两个值之一时,我正在尝试激活一个字段(默认为禁用)。这是我为完成任务而编写的 JavaScript 函数。

function changeTextBox() {
    comp = document.getElementById('comparator');
    if(comp.value=='equalto'||comp.value=='notequalto')
        document.getElementById('localevalue').disable=false;
    else
        document.getElementById('localevalue').disable=true;    
}

这是下拉菜单

<label style="font-size:16px" for="comparator">Comparator:</label>
<select id="comparator" name="comparator" onChange="changeTextBox();">
    <option value="lessthan">Less Than</option>
    <option value="lessthanequalto">Less Than or Equal To</option>
    <option value="greaterthan">Greater Than</option>
    <option value="greaterthanequalto">Greater Than or Equal To</option>
    <option value="equalto">Equal To</option>
    <option value="notequalto">Not Equal To</option>
    <option value="exists">Exists</option>
</select>

这是从下拉菜单中选择“等于”或“不等于”时需要激活的字段。

<label style="font-size:16px" for="value">Value:</label>
<input type="number" id="value" disabled/>

但是当我选择其中一个字段时,该框仍然处于停用状态。谁能告诉我我做错了什么?

【问题讨论】:

  • 禁用,不禁用
  • @dandavis 就是这样,谢谢
  • 请在标题中加上 FIXED,以便其他人知道问题已解决。
  • @MathSquared11235 您建议 SO 用户做一件非常糟糕的事情。问题被标记为已解决的方式是通过 OP 自己给出的答案或社区提供的其他答案接受的答案
  • OP 应该发布他们自己的答案,说明他们找到的解决方案(无论多么简单)并将其标记为已接受

标签: javascript html


【解决方案1】:

这应该可以工作

function changeTextBox() {
    var comp = document.getElementById('comparator');
    if(comp.value=='equalto'||comp.value=='notequalto')
        document.getElementById('value').disabled=false;
    else
        document.getElementById('value').disabled=true;    
}

编辑:抱歉,页面已加载,我没有注意到 dandavis 的评论。除此之外,在我的回复中,我已将 document.getElementById('localevalue') 更改为 document.getElementById('value')

【讨论】:

  • 对不起,dandavis,这不是我的本意。况且我还没有足够的声望来发cmet,所以回复是唯一的办法。
  • 我只是让你的蛋蛋爆一下,没什么大不了的。 ;)
【解决方案2】:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Stack Overflow</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script>
function changeTextBox()
{
         var val=$('#comparator').val();

          alert(val);
      if(val==='equalto' || val==='notequalto')
      {
         $('#value').removeAttr("disabled");              
      }
      else{$('#value').prop('disabled', true);}
}
</script>
</head>
<body>
 <label style="font-size:16px" for="comparator">Comparator:</label>
    <select id="comparator" name="comparator" onChange="changeTextBox();">
        <option value="lessthan">Less Than</option>
        <option value="lessthanequalto">Less Than or Equal To</option>
        <option value="greaterthan">Greater Than</option>
        <option value="greaterthanequalto">Greater Than or Equal To</option>
        <option value="equalto">Equal To</option>
        <option value="notequalto">Not Equal To</option>
        <option value="exists">Exists</option>
 </select>

<label style="font-size:16px" for="value">Value:</label>
<input type="number" id="value" disabled/>
</body>
</html>

干杯:)

【讨论】:

    【解决方案3】:

    问题是我应该在我的 JS 函数中使用 .disabled,而不是 .disable。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-22
      • 2021-12-31
      • 2012-08-17
      • 1970-01-01
      • 1970-01-01
      • 2018-11-27
      • 2011-05-30
      相关资源
      最近更新 更多