我需要做一个表单:
序号      评价内容       权重          评分
1         文化认同        5分         (此处为1-5分,不能为空)
2         职业心态        5分          (同上)                 总计                  (以上分数之和)括号中是需要用户填的,用JS该怎么写呢?

解决方案 »

  1.   


    <script>
    function cal(){
    var a = document.getElementsByName("point");
    var n = 0;
    for(var i=0;i<a.length;i++){
    var s = (a[i].value).replace(/(^\s+|\s+$)/,"");
    var re = /^[1-5]$/;
    if(re.test(s)) n += parseInt(s);
    else a[i].value = 0;
    }
    document.getElementById("pad").innerHTML = n;
    }
    </script>
    <form>
    <table>
    <tr><td>序号</td><td>评价内容</td><td>权重</td><td>评分</td></tr>
    <tr><td>1</td><td>文化认同</td><td>5分</td><td><input type="text" name="point" onblur="cal()"></td></tr>
    <tr><td>2</td><td>职业心态</td><td>5分</td><td><input type="text" name="point" onblur="cal()"></td></tr>
    <tr><td colspan="4" align="right">总计:<span id="pad">0</span></td></tr></table>
    </form>
      

  2.   

    网上有的是!^[1-5]
    在文本框的onblue 事件写计算函数即可!
      

  3.   

    对每一个输入框进行判断,传一个值进去,这个值是分数,因为你的分数不是一样的.
    getELementById().value得到输入框的值,用正则判断是不是数字,这个前面已经说了
    然后用parseInt(val)就可以转为数字了,然后计算总分时也要用parseInt
      

  4.   


    <script>
    function cal(){
    var a = document.getElementsByName("point");
    var n = 0;
    for(var i=0;i<a.length;i++){
    var s = (a[i].value).replace(/(^\s+|\s+$)/,"");
    var re = /^\d{1,2}$/;
    if(re.test(s)){
    var m = parseInt(s);
    if(m>=1 && m<= parseInt(a[i].getAttribute("rel"), 10)) n += m;
    else a[i].value = "";
    }
    else a[i].value = "";
    }
    document.getElementById("pad").innerHTML = n;
    }
    </script>
    <form>
    <table>
    <tr><td>序号</td><td>评价内容</td><td>权重</td><td>评分</td></tr>
    <tr><td>1</td><td>文化认同</td><td>5分</td><td><input type="text" name="point" onblur="cal()" rel="5"></td></tr>
    <tr><td>2</td><td>职业心态</td><td>5分</td><td><input type="text" name="point" onblur="cal()" rel="5"></td></tr>
    <tr><td>3</td><td>专业能力</td><td>15分</td><td><input type="text" name="point" onblur="cal()" rel="15"></td></tr>
    <tr><td>4</td><td>创新能力</td><td>15分</td><td><input type="text" name="point" onblur="cal()" rel="15"></td></tr>
    <tr><td colspan="4" align="right">总计:<span id="pad">0</span></td></tr></table>
    </form>
      

  5.   

    name="point"这样的话是不是无法对每项的评价内容得分进行统计了?在后台得到的只有一个总分是吗?
      

  6.   

    后台的得到的是 point=1&point=2&point=3&point=4 格式, 可以用split来分开如果是asp的话 可以直接取 
    item1 = Request("point")(0) 
    item2 = Request("point")(1)