HTML select onChange不起作用

时间:2015-04-16 08:09:39

标签: javascript html

我对JavaScript并不精通。 所以我编写了一个在HTML SELECT上使用的简单函数,但它不起作用。

JavaScript的:

<script type="text/javascript" language="JavaScript">

function changeFormAction() {

    var value = document.getElementById("format");

    if (value == "freeText") {
        document.getElementById("regularExpression").setAttribute("disabled", false);
    }

}

</script>

HTML:

<select id="format" name="customFieldType" onChange='changeFormAction()'>
   ...
</select>

<input id="regularExpression" type=text size=5 name="format" disabled="true">

任何帮助都将受到高度赞赏

4 个答案:

答案 0 :(得分:2)

代码中的

value 包含元素“格式”。通常,要获取该值,只需添加.value作为后缀。但是,由于这是一个选择/下拉,你将不得不这样做:

var element = document.getElementById("format");
var value = element.options[element.selectedIndex].value;
var text = element.options[element.selectedIndex].text;

现在 value text 将包含不同的字符串,如下所示:

<option value="thisIsTheValue">thisIsTheText</option>

使用任何一个来比较。我将在下面使用它们作为示例:

function changeFormAction() {
    var element = document.getElementById("format");
    var sValue = element.options[element.selectedIndex].value;
    var sText = element.options[element.selectedIndex].text;
    if (sValue  == "freeText" || sText == "freeText") {
        document.getElementById("regularExpression").removeAttribute("disabled");
    }
}

答案 1 :(得分:2)

问题是别的..它确实在更改customField选择列表时点击了changeFormAction函数。

var value = document.getElementById("regularExpression");

用法不对.. 你应该用它作为

 var value = document.getElementById("regularExpression").value

从注释中添加禁用它也可以

document.getElementById("regularExpression").removeAttribute("disabled");

答案 2 :(得分:1)

这不会起作用,因为你试图使用document.getElementById(“regularExpression”)来获取文本框值。值;

但是在页面加载时,你没有任何东西作为文本框中的默认值 您可能需要获取选择框的值。

答案 3 :(得分:1)

我认为你需要这样的东西:

http://jsfiddle.net/ew5cwnts/2/

 function changeFormAction(value) {

       if (value == "freeText") {
            document.getElementById("regularExpression").removeAttribute("disabled");
        }

    }

HTML:

<select name="customFieldType" onchange='changeFormAction(this.value)'>