【问题标题】:fill html form when select value from mysql table using drop-down menu使用下拉菜单从 mysql 表中选择值时填写 html 表单
【发布时间】:2019-02-10 12:41:42
【问题描述】:

我有表调用products_tbl

+-----+------------+----------------+-------+------+-----------+
|pr_id|product_name|product_category|Price1 |Price2|product_img|
+-----+------------+----------------+-------+------+-----------+
|1    |Apple       |fruits          |12     |15    |aimg.jpg   |
|2    |Orange      |fruits          |10     |11    |orimg.jpg  |
|3    |Iphone X    |Electronics     |900    |1025  |iphimg.jpg |
|4    |FJ-Eye Lens |Accessories     |20     |25    |fjimg.jpg  |
+-----+------------+----------------+-------+------+-----------+

我已经从表中获取 product_name 并将其放入 Select Option 中,当用户从选择选项中选择值时,它会显示它的图像并将其放入 img 标签中(这个工作完美)。

我希望当用户从选择选项中选择一些产品名称时,它会在 2 个文本输入中显示价格 1 和价格 2,与图像相同

products.php

$productQ = "SELECT * FROM products_tbl ORDER BY product_category ASC";
try { 
    $stmt2 = $db->prepare($productQ); 
    $stmt2->execute();
} catch(PDOException $ex) { 
    die("Failed to run membersQ: " . $ex->getMessage()); 
} 
$produtsrows = $stmt2->fetchAll();

echo"<select name='dropdown' id='dropdown' required>
        <option selected disabled>Choose</option>";
    $category = "";
    foreach($produtsrows as $prow): 
        if ($category != $prow['product_category']) {
            if ($category != "") {
                echo "</optgroup>";
            }
            $category = $prow['product_category'];
            echo "<optgroup label=".$prow['product_name'].">";
        }
        echo"   <option value='imgs/".$prow['product_img']."'>".$prow['product_name']."</option>";
    endforeach;
    echo "</optgroup>
</select>
<input type='text' name='p1' id='p1' value=''>
<input type='text' name='p1' id='p2' value=''>

<img id='image' src='' alt=''>";

JavaScript

<script type="text/javascript">
$(function(){
    $( '#dropdown' ).change(function(){
        $( '#image' ).attr( 'src', $( this ).val() + '' );
        $( '#p1' ).attr( 'value', $( this ).val() + '' );
        $( '#p2' ).attr( 'value', $( this ).val() + '' );
    })

});

</script>

当我从选择选项中选择任何值时,它会在文本框中显示图像的名称,而不是 price1 和 price2

如何显示 price1 和 price2 而不是图片名称

【问题讨论】:

    标签: javascript php mysqli pdo


    【解决方案1】:

    您可以应用新属性以从下拉列表中获取多个值。

    解决方案:

    第一步:添加data-price1='.$prow['Price1'].'data-price2='.$prow['Price2'].'

    第 2 步:使用 jquery attr 获取 data-price*

    例子:

    .php 文件:

    $productQ = "SELECT * FROM products_tbl ORDER BY product_category ASC";
    try { 
        $stmt2 = $db->prepare($productQ); 
        $stmt2->execute();
    } catch(PDOException $ex) { 
        die("Failed to run membersQ: " . $ex->getMessage()); 
    } 
    $produtsrows = $stmt2->fetchAll();
    
    echo"<select name='dropdown' id='dropdown' required>
            <option selected disabled>Choose</option>";
        $category = "";
        foreach($produtsrows as $prow): 
            if ($category != $prow['product_category']) {
                if ($category != "") {
                    echo "</optgroup>";
                }
                $category = $prow['product_category'];
                echo "<optgroup label=".$prow['product_name'].">";
            }
            echo"   <option value='imgs/".$prow['product_img']."' data-price1='.$prow['Price1'].' data-price2='.$prow['Price2'].'>".$prow['product_name']."</option>";
        endforeach;
        echo "</optgroup>
    </select>
    <input type='text' name='p1' id='p1' value=''>
    <input type='text' name='p1' id='p2' value=''>
    
    <img id='image' src='' alt=''>";
    

    jQuery:

    $(function(){
        $( '#dropdown' ).change(function(){
            $('#image').attr( 'src', $( this ).val() + '' );
            $('#p1').attr( 'value', $(this).children('option:selected').attr('data-price1'));
            $('#p2').attr( 'value', $(this).children('option:selected').attr('data-price2'));
        })
    });
    

    检查下面的 HTML 代码:

    $(document).ready(function () {
        $('#dropdown').change(function () {
            $('#p1').attr('value', $(this).children('option:selected').attr('data-price1'));
            $('#p2').attr('value', $(this).children('option:selected').attr('data-price2'));
        })
    });//jq
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    Change list : 
    <select id="dropdown">
        <option data-price1="12" data-price2="15">Apple</option>
        <option data-price1="10" data-price2="11">Orange</option>
        <option data-price1="900" data-price2="1025">Iphone X</option>
        <option data-price1="20" data-price2="25">FJ-Eye Lens</option>
    </select>
    <br />
    Price 1 : <input type="text" id="p1" />
    <br />
    Price 2 : <input type="text" id="p2" />

    我希望这会有所帮助。

    【讨论】:

    • 我认为这是指下拉列表,您将 data-price 和 data-price2 绑定到选项。也许您需要检查选项:选定的属性值。
    • 它在 2 文本框中返回 undefined
    • 我认为你需要一些东西 $(this).children('option:selected').attr('data-price1''));
    • @HaydeerHussien,上面应用了HTML工作代码,请检查
    • 亲爱的@saAction HTML 示例运行良好,但是当我在我的代码中尝试它时,它没有显示任何结果
    【解决方案2】:
    Bind the attribute in option and change the script..
    
    <select id="slct" onchange="dropdownhange(this)">
    <option value="1" data-cust="a"> 1 </option>
    <option value="2" data-cust="b"> 2 </option>
    <option value="3" data-cust="c"> 3 </option>
    </select>
    
    function dropdownhange(obj){
      console.log($(obj).val());
      console.log($(obj).children('option:selected').attr('data-cust'));
    }
    

    https://codepen.io/pixel-lab/pen/zJdqvv?editors=1111

    【讨论】:

    • 它在控制台上工作吗?在文本框中显示如何?
    • 类似: $('#dropdown').change(function () { $('#p1').val($(this).children('option:selected').attr ('data-price1')); $('#p2').val($(this).children('option:selected').attr('data-price2')); })
    猜你喜欢
    • 1970-01-01
    • 2020-11-25
    • 2015-04-05
    • 2012-02-23
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    相关资源
    最近更新 更多