在javascript中将具有相同ID的一个文本框的值复制到另一个文本框中

问题描述:

下面是我的问题的html代码,我需要将一个文本框的内容复制到另一个相似ID的onblur或onkeyup。请帮助我。 javascript函数“sync”应该针对我的问题进行更新。提前致谢。在javascript中将具有相同ID的一个文本框的值复制到另一个文本框中

<html> 

</head> 
    <body> 
     <div id="container">   

      <script type="text/javascript"> 
function sync(order){ 
    var val, i, val1; 
    val = document.getElementsByTagName('input'); 
    alert(val.length); 
    for (i=0;i<val.length;i++){ 
      if(val[i].getAttribute('id')==order){ 
       val1 = document.getElementById(order).value; 
       if(val1 != '') 
        break; 
      } 

    } 

} 

</script> 
      <div id="body"> 
       <div id="wrapper"> 
        <form id="assignship" name="assignship" action="/drivewise-dst/assignship" method="post"> 
<table class="wwFormTable"> 
    <table width="1024" border="0" cellspacing="0" cellpadding="0"> 

      <tr> 
       <td height="10" colspan="3" class="titlebar" 
        style="background-repeat: no-repeat; align: right">&nbsp;</td> 
      </tr> 
      <tr> 
       <td colspan="3"> 
       <table width="1011" border="0" cellpadding="0" cellspacing="0"> 
        <tr> 
         <td width="17">&nbsp;</td> 
         <td width="10" bgcolor="#CCCCCC" class="header">&nbsp;</td> 
         <td width="110" bgcolor="#CCCCCC" class="header">Export To Excel</td> 
         <td width="130" bgcolor="#CCCCCC" class="header">Order #</td> 
         <td width="175" bgcolor="#CCCCCC" class="header">First Name</td> 
         <td width="205" bgcolor="#CCCCCC" class="header">Last Name</td> 
         <td width="142" bgcolor="#CCCCCC" class="header">Tracking #</td> 
         <td width="115" bgcolor="#CCCCCC" class="header">Serial #</td> 
        </tr> 
       </table> 
       </td> 
      </tr> 
      <tr> 
       <td></td> 
       <td> 
       <div 
        style="width: 993px; height: 350px; overflow: auto; overflow-x: hidden; background-color: #f9f5e3;"> 
       <table width="1024" border="0" cellspacing="0" cellpadding="0"> 
        <tr> 
         <td colspan="7"> 
         <div align="center"></div> 
         </td> 
        </tr> 
        <tr> 
         <td width="114"> 
         <div align="center"><input name="Export7" type="checkbox" 
          id="Export7" onclick="javascript:checkedAll();" /></div> 
         </td> 
         <td width="105">&nbsp;</td> 
         <td width="175">&nbsp;</td> 
         <td width="175">&nbsp;</td> 
         <td width="142">&nbsp;</td> 
         <td width="142">&nbsp;</td> 
        </tr> 


         <input type="hidden" name="vinHidden" value="VIN" id="assignship_vinHidden"/> 
         <tr> 
          <td width="114" align="center"><input 
           value="0" 
           type=checkbox name="chkbox" id="chkbox"></input></td> 
          <td width="105" class="chartcopy">1067</td> 
          <td width="175" class="chartcopy">ELEPHANT</td> 
          <td width="175" class="chartcopy">FOX</td> 
          <td width="142"><input type="text" name="trackingNumber" size="15" maxlength="50" value="" id="1067" onblur="javascript:sync('1067')"/></td> 
          <td width="160"> 
          <div class="action-error"></div> 
          <input type="text" name="serial" size="15" maxlength="10" value="" id="serial"/> 
          </td> 
         </tr> 

         <input type="hidden" name="vinHidden" value="VIN" id="assignship_vinHidden"/> 
         <tr> 
          <td width="114" align="center"><input 
           value="1" 
           type=checkbox name="chkbox" id="chkbox"></input></td> 
          <td width="105" class="chartcopy">1067</td> 
          <td width="175" class="chartcopy">ELEPHANT</td> 
          <td width="175" class="chartcopy">FOX</td> 
          <td width="142"><input type="text" name="trackingNumber" size="15" maxlength="50" value="" id="1067" onblur="javascript:sync('1067')"/></td> 
          <td width="160"> 
          <div class="action-error"></div> 
          <input type="text" name="serial" size="15" maxlength="10" value="" id="serial"/> 
          </td> 
         </tr> 

         <input type="hidden" name="vinHidden" value="VIN" id="assignship_vinHidden"/> 
         <tr> 
          <td width="114" align="center"><input 
           value="2" 
           type=checkbox name="chkbox" id="chkbox"></input></td> 
          <td width="105" class="chartcopy">1067</td> 
          <td width="175" class="chartcopy">ELEPHANT</td> 
          <td width="175" class="chartcopy">FOX</td> 
          <td width="142"><input type="text" name="trackingNumber" size="15" maxlength="50" value="" id="1067" onblur="javascript:sync('1067')"/></td> 
          <td width="160"> 
          <div class="action-error"></div> 
          <input type="text" name="serial" size="15" maxlength="10" value="" id="serial"/> 
          </td> 
         </tr> 

         <input type="hidden" name="vinHidden" value="VIN" id="assignship_vinHidden"/> 
         <tr> 
          <td width="114" align="center"><input 
           value="3" 
           type=checkbox name="chkbox" id="chkbox"></input></td> 
          <td width="105" class="chartcopy">1085</td> 
          <td width="175" class="chartcopy">CAT</td> 
          <td width="175" class="chartcopy">DOG</td> 
          <td width="142"><input type="text" name="trackingNumber" size="15" maxlength="50" value="" id="1085" onblur="javascript:sync('1085')"/></td> 
          <td width="160"> 
          <div class="action-error"></div> 
          <input type="text" name="serial" size="15" maxlength="10" value="" id="serial"/> 
          </td> 
         </tr> 

         <input type="hidden" name="vinHidden" value="VIN" id="assignship_vinHidden"/> 
         <tr> 
          <td width="114" align="center"><input 
           value="4" 
           type=checkbox name="chkbox" id="chkbox"></input></td> 
          <td width="105" class="chartcopy">3333</td> 
          <td width="175" class="chartcopy">APPLE</td> 
          <td width="175" class="chartcopy">BOY</td> 
          <td width="142"><input type="text" name="trackingNumber" size="15" maxlength="50" value="" id="3333" onblur="javascript:sync('3333')"/></td> 
          <td width="160"> 
          <div class="action-error"></div> 
          <input type="text" name="serial" size="15" maxlength="10" value="" id="serial"/> 
          </td> 
         </tr> 

         <input type="hidden" name="vinHidden" value="VIN" id="assignship_vinHidden"/> 
         <tr> 
          <td width="114" align="center"><input 
           value="5" 
           type=checkbox name="chkbox" id="chkbox"></input></td> 
          <td width="105" class="chartcopy">3333</td> 
          <td width="175" class="chartcopy">APPLE</td> 
          <td width="175" class="chartcopy">BOY</td> 
          <td width="142"><input type="text" name="trackingNumber" size="15" maxlength="50" value="" id="3333" onblur="javascript:sync('3333')"/></td> 
          <td width="160"> 
          <div class="action-error"></div> 
          <input type="text" name="serial" size="15" maxlength="10" value="" id="serial"/> 
          </td> 
         </tr> 

         <input type="hidden" name="vinHidden" value="VIN" id="assignship_vinHidden"/> 
         <tr> 
          <td width="114" align="center"><input 
           value="6" 
           type=checkbox name="chkbox" id="chkbox"></input></td> 
          <td width="105" class="chartcopy">3334</td> 
          <td width="175" class="chartcopy">APPLE</td> 
          <td width="175" class="chartcopy">BOY</td> 
          <td width="142"><input type="text" name="trackingNumber" size="15" maxlength="50" value="" id="3334" onblur="javascript:sync('3334')"/></td> 
          <td width="160"> 
          <div class="action-error"></div> 
          <input type="text" name="serial" size="15" maxlength="10" value="" id="serial"/> 
          </td> 
         </tr> 

         <input type="hidden" name="vinHidden" value="VIN" id="assignship_vinHidden"/> 
         <tr> 
          <td width="114" align="center"><input 
           value="7" 
           type=checkbox name="chkbox" id="chkbox"></input></td> 
          <td width="105" class="chartcopy">3335</td> 
          <td width="175" class="chartcopy">APPLE</td> 
          <td width="175" class="chartcopy">BOY</td> 
          <td width="142"><input type="text" name="trackingNumber" size="15" maxlength="50" value="" id="3335" onblur="javascript:sync('3335')"/></td> 
          <td width="160"> 
          <div class="action-error"></div> 
          <input type="text" name="serial" size="15" maxlength="10" value="" id="serial"/> 
          </td> 
         </tr> 

       </table> 
       </div> 
       </td> 
       <td>&nbsp;</td> 
      </tr> 
      <tr> 
       <td colspan="3"> 
       <table width="1011" border="0" cellspacing="0" cellpadding="0"> 
        <tr> 
         <td height="43" bgcolor="#FFFFFF">&nbsp;</td> 
</td> 
         <td width="157" bgcolor="#FFFFFF"><input type="button" alt="" id="xxx" name="xxx" value="submit"/> 

         </td> 
        </tr> 
       </table> 
       </td> 
      </tr> 


    </table> 
</table></form>          
       </div> 
      </div> 
     </div> 
    </body> 

</html> 
+0

我真的无法看到发生了什么,你的格式有点有趣。 – xj9 2010-09-13 23:33:57

你的主要问题是所有<input>元素具有相同的ID, “1067”。这不但不符合XHTML标准,而且会导致您的javascript问题,因为document.getElementById(order)将返回多个元素,这是该函数不能处理的场景。

我建议应用类所有<input>元素,使用jQuery的.blur()事件绑定到类的每一个元素,并执行你的逻辑方式(使用jQuery的的foreach枚举,而不是一个与ID匹配环) 。

当然,您也可以使用常规JavaScript来完成此操作(就像您已经完成的那样,在实际元素上内联“onblur”事件接线)。

但首先要弄清楚HTML,以便它可以在JavaScript中表现出色。

+0

其实我的意图是复制跟第一个文本框中输入的trackingNum相同的文本到其他OrderID ....如果可能的话,请你帮助我步骤明智的变化和使用jQuery的JavaScript代码。 – Colours 2010-09-14 02:20:55

+0

它不容易回答 - 因为你的HTML没有意义。你的HTML是否被修复?或者是一个动态生成的?看起来你有一堆内容相同的tr。这是动态内容,还是你手动输入所有这些HTML?如果是手动的,请删除所有ID,然后将每个TD包裹在一个带有ID的DIV中。然后,您可以通过div id获取元素,例如('#sometr .trackingnumber')会为您提供具有唯一DIV内跟踪编号类别的元素。你可以将类应用于你想要处理的元素 - 并以这种方式工作。 – RPM1984 2010-09-14 03:19:18

id应该是独一无二的,你不应该有一个以上的元素与页面上相同的ID,而不能使用getElementById引用它们(这将可能文件以便与返回的第一个元素ID)。

你可以做到这一点......如果非要用getElementsByTagName和循环(有点类似于你的代码)

function getIds(id) { 
    var inputs = document.getElementsByTagName('input'), matches = []; 
    for (var i=0; i<inputs.length; i++) 
    if (inputs[i].getAttribute('id') == id) matches.push(inputs[i]); 

    return matches; 
} 

但是,你真的应该重新的因素,并把“相似”值元素类,在这种情况下,上面的代码仍然可以工作,只需要用替换'class'

+0

我已将每个文本框的“id”更改为class,并修改了上述方法中的getAttribute('class'),但不知道如何从类似的文本框复制数据。请帮我进一步处理。 – Colours 2010-09-20 05:15:04

+0

好吧,函数'getIds'返回一个元素数组,所以你需要遍历该数组,并将每个元素的'value'属性设置为你正在复制的任何数据。 – MooGoo 2010-09-20 14:14:49