php
  • jquery
  • forms
  • 2013-02-13 193 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> 
    
    相關問題