当前位置: 代码迷 >> JavaScript >> select的onchange和文本框那些事儿
  详细解决方案

select的onchange和文本框那些事儿

热度:68   发布时间:2012-08-10 12:19:33.0
求助select的onchange和文本框那些事儿
是这样的,select下拉框有三个项目,分别是
美金
日元
人民币

当选择"美金"的时候
文本框可以输入的值是14位整数
当选择"日元"的时候
文本框可以输入的值是11位整数2位小数
当选择"人民币"的时候
文本框可以输入的值是9位整数2位小数

并且每次改变选项,之前输入的值要清空的


这个onchange的function要怎么写啊。。。我怎么写都没触发的赶脚。。。。。。



------解决方案--------------------
<select name="selectname" id="selectid" onchange="document.getElementById('inputid').value = ''"></select>
<input name="inputname" id="inputid" onblur=checkvalue(this)>
function checkvalue(o){
selv = document.getElementById('selectid').value;
t1 = "/^\d{1,14}$/";
t2 = "/^\d{1,11}\.\d{1,2}$/";
t3 = "/^\d{1,9}\.\d{1,2}$/";
r = false;
if(selv=="美金")r = t1.test(o.v)
if(selv=="日元")r = t2.test(o.v)
if(selv=="人民币")r = t3.test(o.v)
if(!r)alert("输入错误!");
}
没调试,大概就是这个意思。
------解决方案--------------------
顶帖收藏,就是楼上的这个思路。


------解决方案--------------------
HTML code
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
</head>

<body>
    <select id="sel">
        <option value="usd">美金</option>
        <option value="yen">日元</option>
        <option value="rmb">人民币</option>
    </select>
    <input id="textbox" type="text" />
    <div id="debug"></div>
    <script>
        var sel = document.getElementById('sel'),
            input = document.getElementById('textbox');
        sel.onchange = function(){
            input.value = '';
        }
        input.onkeypress = function(event){
            var e = event || window.event,
                key = e.keyCode || e.which,
                str = this.value + String.fromCharCode(key),
                reg;
            if(e.keyCode !== 0){
                return true;
            }
            switch(sel.value){
                case 'usd': 
                    reg = /^\d{0,14}$/;
                    break;
                case 'yen': 
                    reg = /^\d{0,11}(?:\.\d{0,2})?$/;
                    break;
                case 'rmb':
                    reg = /^\d{0,9}(?:\.\d{0,2})?$/;
                    break;
            }
            if(!reg.test(str)){
                return false;
            }
        }
        input.onblur = function(){
            if(/\.$/.test(this.value)){
                this.value += "00";
            }
        }
    </script>
</body>
</html>

------解决方案--------------------
3 楼正解,

<script>//这个地方最好完善下,不然在浏览器下可能会有问题 <script type="text/javascript">
  相关解决方案