日期:2014-05-16  浏览次数:20447 次

如何替换输入内容
网页有ListBox控件ID为ListBoxRight,然后一个输入框,tb_calculation,以前ListBoxRight加入一些项后,可以在输入框输入相关公式,比如ListBoxRight加入B后,可以输入 [kpi].[b],点击验证按钮通过;
如果加入B,C后,可以输入 [kpi].[b]+[kpi].[c],点击验证按钮通过。
现在希望加入B后输入sum([kpi].[all])点击验证按钮时输入框会变成 [kpi].[b]
如果加入B,C后输入sum([kpi].[all]) 点击验证按钮时输入框会变成[kpi].[b]+[kpi].[c]
现在希望加入B后输入average([kpi].[all])点击验证按钮时输入框会变成 [kpi].[b]  或者[kpi].[b]/1也行
如果加入B,C后输入average([kpi].[all]) 点击验证按钮时输入框会变成([kpi].[b]+[kpi].[c])/2
JS 怎么写啊? 谢谢

------解决方案--------------------
<select id="ListBoxRight">
<option value="a">A</option>
<option value="b">B</option>
<option value="c">C</option>
</select>
<input type="text" id="tb_calculation" style="width:60%" /><input type="button" value="验证" onclick="check()"/>
<script>
    function check() {
        var sel = document.getElementById('ListBoxRight'), txt = document.getElementById('tb_calculation');
        var arr = [],rst='';
        for (var i = 0; i < sel.options.length; i++) {
            arr[i] = "[kpi].[" + sel.options[i].value + "]";
        }
        switch (txt.value) {
            case 'sum([kpi].[all])': rst = arr.join('+'); break;
            case 'average([kpi].[all])': rst = arr.length == 1 ? arr[0] : "(" + arr.join('+') + ")/" + arr.length; break;
        }
        txt.value = rst;
    }
</script>