簡體   English   中英

在PHP while循環內使用JavaScript代碼處理多個文本字段

[英]using javascript code inside a PHP while loop for multiple text fields

我正在使用PHP和循環內的一些JavaScript從數據庫中選擇數據:

<script type="text/javascript">
    $('#voip_type<?php echo $i; ?>').on('change',function(){
        var val = $(this).val();
        if( val ==="no"){
            $("#producttype<?php echo $i; ?>").show()
        }
        else if( val ==="extension")
        {
            $("#producttype<?php echo $i; ?>").val("VoIP Telephony").show()
        }
        else {
            $("#producttype<?php echo $i; ?>").val("VoIP Telephony").show()
        }
    });
    </script>

每次循環時,它會將+1加到$i

這在文本字段ID中執行相同的操作,因此JS中的代碼和文本字段ID匹配名稱,但在文本字段和選擇元素上的值未更改

這是一個select元素的示例:

<select name="voip_type<?php echo $i; ?>" id="voip_type<?php echo $i; ?>" style="width:120px;">
        <option value="">VoIP Item?</option>
        <optgroup label="No">
        <option value="no" <?php if($result["voip_type"] != 'extension' or $result["voip_type"] != 'queue' or $result["voip_type"] != 'ivr' or $result["voip_type"] != 'storage') { echo 'selected="selected"'; } ?>>Continue</option>
        </optgroup>
        <optgroup label="Yes">
        <option value="extension" <?php if($result["voip_type"] == 'extension') { echo 'selected="selected"'; } ?>>Extension</option>
        <option value="queue" <?php if($result["voip_type"] == 'queue') { echo 'selected="selected"'; } ?>>Queue</option>
        <option value="ivr" <?php if($result["voip_type"] == 'ivr') { echo 'selected="selected"'; } ?>>IVR</option>
        <option value="storage" <?php if($result["voip_type"] == 'storage') { echo 'selected="selected"'; } ?>>Storage</option>
        </select>

更新-完整代碼:

<?php
$sql="SELECT * FROM customer_billing where customer_seq = '".$_GET["seq"]."' ";
$rs=mysql_query($sql,$conn) or die(mysql_error());
$i=0;
while($result=mysql_fetch_array($rs)) {
    $i++; ?>
    <script type="text/javascript">
    $('#voip_type<?php echo $i; ?>').on('change',function(){
        var val = $(this).val();
        if( val ==="no"){
            $("#producttype<?php echo $i; ?>").show()
        }
        else if( val ==="extension")
        {
            $("#producttype<?php echo $i; ?>").val("VoIP Telephony").show()
        }
        else {
            $("#producttype<?php echo $i; ?>").val("VoIP Telephony").show()
        }
    });
    </script>
    <input type="hidden" name="sequence<?php echo $i; ?>" size="30" value="<?php echo $result["sequence"]; ?>" />

    <select name="voip_type<?php echo $i; ?>" id="voip_type<?php echo $i; ?>" style="width:120px;">
        <option value="">VoIP Item?</option>
        <optgroup label="No">
        <option value="no" <?php if($result["voip_type"] != 'extension' or $result["voip_type"] != 'queue' or $result["voip_type"] != 'ivr' or $result["voip_type"] != 'storage') { echo 'selected="selected"'; } ?>>Continue</option>
        </optgroup>
        <optgroup label="Yes">
        <option value="extension" <?php if($result["voip_type"] == 'extension') { echo 'selected="selected"'; } ?>>Extension</option>
        <option value="queue" <?php if($result["voip_type"] == 'queue') { echo 'selected="selected"'; } ?>>Queue</option>
        <option value="ivr" <?php if($result["voip_type"] == 'ivr') { echo 'selected="selected"'; } ?>>IVR</option>
        <option value="storage" <?php if($result["voip_type"] == 'storage') { echo 'selected="selected"'; } ?>>Storage</option>
        </select><br />

        <select name="producttype<?php echo $i; ?>" id="producttype<?php echo $i; ?>" style="width:120px;">
        <option value="">none</option>
        <option value="Broadband">Broadband</option><option value="Hosted Exchange">Hosted Exchange</option><option value="Offsite Backup">Offsite Backup</option><option value="PC Maintenance">PC Maintenance</option><option value="Phone Lines (PSTN/ISDN)" selected="selected" >Phone Lines (PSTN/ISDN)</option><option value="Software Development">Software Development</option><option value="VoIP Telephony">VoIP Telephony</option><option value="Web Hosting">Web Hosting</option>     </select>

      <input type="text" name="productname<?php echo $i; ?>" size="30" value="<?php echo $result["productname"]; ?>" />
      <?php
}
?>

您的代碼很難調試。 我的建議是,將您的代碼分成2個單獨的代碼段,一個用於PHP,另一個用於Javascript。 您可以混合使用兩種語言,但這並不意味着您應該混合使用兩種語言。 而是這樣做

<script type="text/javascript">
  var result = <?= json_encode($the_final_query_result) ?>;
</script>

這個想法是將將在JS中使用的所有PHP變量轉換為JS變量。 然后,在您的JS代碼中,您可以僅使用普通的JS函數循環遍歷變量,而無需混合PHP循環和JS代碼(和HTML代碼),從而使您的代碼“ impossibru”得以調試

另一件事是從PHP 5.5( http://fi1.php.net/mysql_fetch_array )開始不推薦使用mysql_fetch_array ,您應該考慮切換到其他版本

如果您想在javascript或jquery中使用php代碼,則應這樣做。

funciton(){;}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM