将onclick转换为onchange

时间:2012-12-29 13:52:41

标签: javascript forms google-chrome onclick onchange

最近几天我一直在为我的网站创建联系表格,这可能是专业的,包含display:none / block和disabled:true / false areas。我做到了。但是一小时前我被告知Chrome不支持“onclick”功能所以现在我必须将所有“onlick”内容改为“onchange”..但它似乎并不清楚(仍然无法正常工作)... < / p>

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()”中将“value”作为“X”插入,因此这个函数可以像在“ONLICK”选项中那样工作。

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

请帮忙。 问候, 麦克

2 个答案:

答案 0 :(得分: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:...隐含的内容。

答案 1 :(得分:0)

this.value()

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

window[this.value]()

此外,最好将功能存储在专用对象中:

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

...

funcs[this.value]()