1

在过去的几天里,我一直在为我的网站创建联系表格,该表格可能是专业的,并且包含 display:none/block 和 disabled:true/false 区域。我成功了。但是一个小时前我被告知 Chrome 不支持“onclick”功能,所以现在我必须将所有“onlick”内容更改为“onchange”.. 但它似乎并不清晰(仍然无法正常工作)......

ONCLICK 工作正常:

<script language="javascript">
    function enableField() { some function here }
    function disableField() { some function here }
</script>

<select class="list" id="topic">
    <option onclick="javascript:disableField()" selected="selected">Select Your topic</option>
    <option onclick="javascript:enableField()">Topic 1</option>
    <option onclick="javascript:enableField()">Topic 2</option>
    <option onclick="javascript:disableField()">Topic 3</option>
    <option onclick="javascript:disableField()">Topic 4</option>
</select>

ONCHANGE 不会:

<script language="javascript">
    function enableField() { some function here }
    function disableField() { some function here }
</script>

<select class="list" id="topic" onchange="javascript:this.value()">
    <option value="disableField" selected="selected">Select Your topic</option>
    <option value="enableField">Topic 1</option>
    <option value="enableField">Topic 3</option>
    <option value="disableField">Topic 3</option>
    <option value="disableField">Topic 4</option>
</select>

我只是想在“javascript:X()”中将“值”插入为“X”,这样这个函数就可以像在“ONLICK”选项中那样工作。

我一直在尝试不同的方式,但这些都不起作用。

请帮忙。问候,迈克

4

2 回答 2

1

一种方法

<select class="list" id="topic" onchange="window[this.value]()">
    <option value="disableField" selected="selected">Select Your topic</option>
    <option value="enableField">Topic 1</option>
    <option value="enableField">Topic 3</option>
    <option value="disableField">Topic 3</option>
    <option value="disableField">Topic 4</option>
</select>

但我会这样做

<script language="javascript">
    function enableField() { some function here }
    function disableField() { some function here }
    function handle(value){
       if (value === 'enableField'){
           enableField();
       } else {
           disableField();
       }
    }
</script>

<select class="list" id="topic" onchange="handle(this.value)">
    <option value="disableField" selected="selected">Select Your topic</option>
    <option value="enableField">Topic 1</option>
    <option value="enableField">Topic 3</option>
    <option value="disableField">Topic 3</option>
    <option value="disableField">Topic 4</option>
</select>

注意:对于诸如 等的事件属性onclickonchange您不必javascript:...说它是隐含的..

于 2012-12-29T13:59:17.447 回答
0
this.value()

是一个字符串;你不能调用一个字符串。你想要的是在全局范围内找到函数:

window[this.value]()

此外,最好将函数存储在专用对象中:

funcs = {
  disableField: function(){...},
  enableField: function(){...},
}

...

funcs[this.value]()
于 2012-12-29T13:59:37.057 回答