php
  • jquery
  • forms
  • 2013-02-13 221 views 3 likes 
    3

    简化,我有一个表单根据mysql查询生成选择框。复制从一个选择框中选择的下拉值到另一个

    $i = 0; 
    while($res= mysql_fetch_assoc($sql2)) 
    echo " <div class='span1'>"; 
    echo "  <input name='orderNo[$i]' type='text' id='orderNo[$i]' value='$orderNo' class='input-small' onclick='populateorderNo()' />"; 
    echo " </div>"; 
    
    echo " <div class='span1'>"; 
    echo "  <select name='methodOfPay[$i]' id='methodOfPay[$i]' class='input-small' >"; 
    echo "  <option value=''>&nbsp;</option>"; 
    echo "  <option value='On Bill'>On Bill</option>"; 
    echo "  <option value='Customer C.C'>Customer C.C</option>"; 
    echo "  <option value='Company G.C'>Company G.C</option>"; 
    echo "  </select>"; 
    echo " </div>"; 
    ++$i; 
    } 
    

    我所试图做的是methodOFPay选择的选项复制[0]到后续methodOfPay []的。我能够使用orderNo的onclick函数来完成它,但我无法弄清楚如何将相同的理论应用于选择框。这是我的简单文本框副本的JS代码。现在,它总是第一行复制到后续行。

    var orderno = 0; 
    function populateorderNo(){ 
    var copyorderNo = document.getElementById('orderNo[0]'); 
    document.getElementById('orderNo[' + orderno + ']').value = copyorderNo.value; 
    orderno += 1; 
    

    }

    任何帮助,将不胜感激。非常感谢你,作为新手,我从这个网站学到了很多东西,并收到了我收到的所有答案。

    +0

    是你试图让它工作,这样,如果用户点击下拉菜单,例如说他们点击** On Bill **,那么所有的下拉菜单中都会选择** On Bill **? – 2013-02-13 03:29:45

    +0

    在这个想法的时刻,无论在methodOfPay [0]上选择了什么,都将复制到另一个methodOfPay – 2013-02-13 03:33:33

    回答

    3

    如果您使用的是直线JavaScript,则可以使用onchange。在jQuery中,您可以使用.change()

    直JavaScript方法

    PHP

    echo "  <select name='methodOfPay[$i]' id='methodOfPay[$i]' class='input-small' onchange='myOnChangeFunction()' >"; 
    ... 
    echo "  </select>"; 
    

    JS

    function myOnChangeFunction() { 
        // Get value and set other selects 
    } 
    

    jQuery的方法(jsfiddle

    JS

    $('select[id^="methodOfPay"]').change(function() { 
        var value = $(this).val(); 
        $('select[id^="methodOfPay"]').not($(this)).val(value); 
    }); 
    
    0

    为了便于演示,我稍微更改了代码,但理论依然如此。

    要注意的主要问题是在JavaScript

    使用计数($ orderNo)这将更好地工作与jQuery和正则表达式,如鲁本方特的例子显示出

    <?php 
    
    for ($i = 0; $i < 10; ++$i) { 
        $orderNo[$i] = $i; 
    } 
    
    ?> 
    
    <html> 
        <head> 
         <title>Hello</title> 
         <script type="text/javascript"> 
          function populateorderNo() { 
           var copyorderNo = document.getElementById('orderNo[0]'); 
           for (var i = 0; i < <?php echo count($orderNo); ?>; i++) { 
            document.getElementById("orderNo["+i+"]").value = copyorderNo.value; 
           } 
          } 
    
          function changeSelectBox() { 
           var selectBox = document.getElementById('methodOfPay[0]'); 
           for (var i = 0; i < <?php echo count($orderNo); ?>; i++) { 
            document.getElementById('methodOfPay['+i+']').value = selectBox.value; 
           } 
          } 
         </script> 
        </head> 
        <body> 
         Hello 
         <?php foreach ($orderNo as $r): ?> 
          <div class='span1'> 
          <input name='orderNo[<?php echo $r;?>]' type='text' id='orderNo[<?php echo $r;?>]' value='<?php echo $r;?>' class='input-small' onchange='populateorderNo();' /> 
          </div> 
    
          <div class='span1'> 
          <select name='methodOfPay[<?php echo $r; ?>]' id='methodOfPay[<?php echo $r;?>]' class='input-small' onchange='changeSelectBox();' > 
          <option value=''>&nbsp;</option> 
          <option value='On Bill'>On Bill</option> 
          <option value='Customer C.C'>Customer C.C</option> 
          <option value='Company G.C'>Company G.C</option> 
          </select> 
          </div> 
         <?php endforeach; ?> 
        </body> 
    </html> 
    
    相关问题