猿问

有没有办法在 PHP 数组中存储从 HTML <select> 中选择的 <option>?

<option>我的想法是将从不同 html 中选择的内容存储在 PHP 数组中<select>。


在我使用从 Jquery 函数调用的 php 函数生成的表单中,<ul>包含每个列表元素文本和<select>


像这样:


添加列表元素的部分表单:

<div>

    <label for="lineasP" id="asignarBdto" hidden>Productos de este pedido:</label>

</div>

<div>

    <ul id="lineaPedidos" hidden>

        <!-- Added here -->

    </ul>

</div>

调用 PHP 函数的 JQuery 函数:

$("#pedidos").on("input", function() {

    $.get("cambio_cliente.php", { idPedido: $("#pedidos").val()}, function (data) {

        $("#lineaPedidos").empty();

        $("#lineaPedidos").append(data);


        $("#asignarBdto").show();

        $("#lineaPedidos").show();

    });

});

PHP函数:

// Si llegamos a este script por haber seleccionado un pedido

if(isset($_GET["idPedido"])){

    // Abrimos una conexión con la BD y consultamos la lista de productos dado un pedido

    $conexion = crearConexionBD();

    $resultado = listarProductos($conexion, $_GET["idPedido"]);


    if($resultado != NULL){

        // Para cada producto del listado devuelto

        foreach($resultado as $lineaPedido) {

            //Listamos los productos de cada pedido

            echo "<li>" . $lineaPedido["NUM_LINEA_P"] .": cantidad= ". $lineaPedido["CANTIDAD"] .", importe= ". $lineaPedido["IMPORTE"] ." <br><label>Base de dto: </label><select class=\"linPed\" required><option value=\"\" hidden disabled selected>% DTO</option> <option value=\"21\">21%</option> <option value=\"16\">16%</option> <option value=\"8\">8%</option></select></li>";

        }

    }

    // Cerramos la conexión y borramos de la sesión la variable "idPedido"

    cerrarConexionBD($conexion);

    unset($_GET["idPedido"]);

}

到目前为止,一切都很好。

表单显示这些字段没有问题:

问题从这里开始

我需要将每个选择的内容存储<option>到我一开始提到的数组中。我不知道<select>将创建多少个,所以我无法为每个创建 ID。我决定为此选择创建一个类 (linPed),并尝试了这个 JS 函数:


$(".linPed").on("input", function(){

   alert("all good");

});

我首先尝试做一些“日志记录”以查看函数是否正确执行,但没有显示警报。 尽管如此,即使函数正确执行,我如何在数组中添加所选.linPed值?或者也许有更简单的方法来做到这一点?


MM们
浏览 101回答 1
1回答

烙印99

我个人会使用changeinstead 而不是input在.on()函数中检测变化,例如:$('.linPed').on('change', function() {&nbsp; alert( this.value );});<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><select class='linPed'>&nbsp; &nbsp; <option value="1"><li>One</li></option>&nbsp; &nbsp; <option value="2">Two</option></select>为了获得所有价值,我会使用.each()如下函数:var arr = [];$('.linPed').each(function(){&nbsp; arr.push($(this).val())})如果我是正确的,这会为您提供数组中的所有选定值arr。编辑:我处决了echo自己并看着它。问题就出在这里。你的课linPed不是\"linPed"\。在您的代码中,\什么都没有。编辑 2:查看您的代码段并立即看到它。你在加载js之前就跑了。html将您JavaScript放在代码的末尾。或者在你的代码周围放置一个现成的函数,比如$(function&nbsp;()&nbsp;{ &nbsp;&nbsp;//Code&nbsp;.. &nbsp;&nbsp;});
随时随地看视频慕课网APP
我要回答