2012-12-29 36 views
1

我一直在为我的网站创建联系表格,这可能是专业的并且包含显示:none/block和disabled:true/false区域。我做到了。但一小时前我被告知,Chrome不支持“onclick”功能,所以现在我必须将这一切“onlick”的东西改成“onchange”..但它看起来不太清楚(仍然不工作)...最近几天将onclick转换为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> 

平变化并不:

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

我只是想成为 “价值”,在插入的 “X” “的javascript:X()”,所以这个功能可以像在“ONLICK”选项中那样工作。

我一直在尝试maaaany不同的方式,但没有一个工作。

请帮助。 问候, 迈克

回答

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:...这是暗示..

+0

加比,谢谢了很多!我会选择第二种方式,看起来很清楚和理解。谢谢!! :)))) – Michael

0
this.value() 

是一个字符串;你不能调用一个字符串。你需要的是找到功能在全球范围内:

window[this.value]() 

而且,最好是存放在一个专用的对象的功能:

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

... 

funcs[this.value]() 
相关问题