本帖最后由 Gemerl 于 2013-08-15 22:49:46 编辑

解决方案 »

  1.   

    1、你要取哪个DOM元素中的值,必须先取到该DOM。从你上面的代码得知。未满仓库的输入框为:<input type="text" class="input2" style=" margin-left: -40px">
    JS取DOM元素需要有特定条件,例如 根据ID,或者根据标签,或者根据class。从你代码上来看,可以通过
    var o = document.getElementsByClassName("class2") 获得所有class = "class2" 的DOM元素。这样就可以取到所有未满仓库的input。然后循环取该元素的value:
    for(i in o){
    alert(i.value)
    }
    2、你用于存放未满仓库ID的元素,该元素的id 统一都为storagesId。这样你是没法通过getElementByid("storagesId")取到所有仓库元素的。并且就算取到了,也无法与上面提到的输入数量进行对应。建议对源代码进行改造。例如:
    将:
    <s:if test="#storage.stoarea<400">
                                    //输入数量的地方
                      <input type="text" class="input2" style=" margin-left: -40px">
                                   //记住仓位编号的地方隐藏域
                      <input id="storagesId" value="<s:property value="#storage.id"/>" style=" height:0px" type="hidden">
                          <img src="images/nos/103.gif" style=" margin: 0px auto;" align="top"><tr/>
                  </s:if>
    修改成:
    <s:if test="#storage.stoarea<400">
                                    //输入数量的地方
                      <input id="<s:property value="#storage.id"/>" type="text" class="input2" style=" margin-left: -40px">
                                   //直接将输入域的id设置为仓库id
                     
                          <img src="images/nos/103.gif" style=" margin: 0px auto;" align="top"><tr/>
                  </s:if>
    这样通过 document.getElementsByClassName("class2") 取到输入数量的域后,通过value可以取到输入值,通过id可以取到仓库编号,且两值存在关联。
    以上代码并没有考虑到 你的隐藏域是否有其他用途,所以我直接删除了。具体怎么改得看你的原设计。
    另外 document.getElementsByClassName("class2")在有些浏览器中好像无法实现。建议使用jquery 中的$(".calss2")。
      

  2.   

    document.getElementsByClassName("class") 中的 class 在你的代码中 应该是 input 对应的class 。你别照着copy啊。对应你的代码应为:document.getElementsByClassName("input2") 或者 jquery中的$(".input2")
      

  3.   

    取到输入的值后,后面的问题就好操作了。
    所有数值相加是否大于你的无聊总数
    循环中所有值相加,然后判断。判断是否输入的数值,i为你单个输入的DOM元素的值
    isNaN(i),如果为数值,返回false
      

  4.   

               <s:if test="#storage.stoarea<400">
                                    //输入数量的地方 ,加上Name属性
                      <input name="stoarea" type="text" class="input2" style=" margin-left: -40px">
                                   //记住仓位编号的地方隐藏域,id改成 name
                      <input name="storagesId" value="<s:property value="#storage.id"/>" style=" height:0px" type="hidden">
                          <img src="images/nos/103.gif" style=" margin: 0px auto;" align="top"><tr/>
                  </s:if>
    例子:取值,判断不能超过最大物料的总数量<style>
    .input2{ width:120px;margin-left:0px }

    </style>
    <form name="form2"  onsubmit="return OnSubmit(this)" >
    <div>
        <ul>
     
                  <li style=" height: 100px; width:150px; float:left; border: 1px solid yellow; text-align: center">
         
                      <input name="storages" type="text" class="input2"  >
                           
                      <input name="storagesId" value="1" style=" height:0px" type="hidden">
            
                                  
                      <p style=" height: 8px; font-size: 12px; margin-top: -2px">仓位:11</p>
                  </li>
                  
              <li style=" height: 100px; width:150px; float:left; border: 1px solid yellow; text-align: center">
         
                      <input name="storages"  type="text" class="input2"  >
                           
                      <input name="storagesId" value="2" style=" height:0px" type="hidden">
            
                                  
                      <p style=" height: 8px; font-size: 12px; margin-top: -2px">仓位:22</p>
                  </li>
                  
                    <li style=" height: 100px; width:150px; float:left; border: 1px solid yellow; text-align: center">
         
                      <input name="storages"   type="text" class="input2" >
                           
                      <input name="storagesId" value="3" style=" height:0px" type="hidden">
           
                      <p style=" height: 8px; font-size: 12px; margin-top: -2px">仓位:33</p>
                  </li>
             
          </ul>
        </div>
        <input type=submit value="提交" >
           
    </form><script>

    var Max=100;//  物料的总数量
    function OnSubmit(f){
     var sum=0;
     for(var i=0;i< f.storagesId.length;i++){
     
       alert( f.storagesId[i].value +':' +  f.storages[i].value ); //测试 输出 storagesId:storages
       sum+=parseInt(f.storages[i].value)||0;
     }
     //不能大于物料的总数量
     if(sum >Max ) {
      alert('不能大于物料的总数量');
      return false;
    }
     
    }
    </script>