• lcaba

    (@lcaba)


    Buenas tardes:

    Estoy intentando en el archive-product crear un formulario para busquedas avanzadas y necesito que en un select al hacer un cambio (onchange) me guarde en una variable el valor de la siguiente función para poder manejar el dato elegido posteriormenete, pero solo consigo imprimirlo en pantalla, no guardarlo en una variable. La funcion tras el onchange es la siguiente:

    function lc_elige_model() {
    var x = document.getElementById(«mySelect»).value;
    document.getElementById(«demo»).innerHTML = x;
    }

    he puesto return, etc. Pero no tengo forma de tener el valor de x para posteriormente realizar otras cosas, solo de imprimirlo.

    Muchas gracias

    • Este debate fue modificado hace 5 años por lcaba.
Viendo 4 respuestas - de la 1 a la 4 (de un total de 4)
  • Hola!
    Puedes declarar la variable ‘x’ como global, dentro del objeto window.

    var x=0; //valor inicial a 0. crea una variable window.x
    function lc_elige_model() {
      window.x = document.getElementById(«mySelect»).value;
    }

    De esta forma la variable x la tendrás accesible posteriormente con el valor uqe tenga al salir de la función lc_elige_model

    Iniciador del debate lcaba

    (@lcaba)

    Muchísimas gracias por tu respuesta Fernando. El tema es que no se cómo ver el contenido de x.

    En php tengo esta línea que hace la llamada desde el SELECT a la función una vez que cambia:

    <select name=»lc_elige_modelo» id=»mySelect» onchange=»lc_elige_model()»>

    por lo que en php en ningún sitio estoy guardando ese valor x, solo en onchange.

    Lo que quiero es tener ese valor elegido en una variable en php para después tener ese modelo de vehículo.

    Perdona por las preguntas quizás absurdas, pero es que estoy hoy bastante espeso…

    Y de nuevo muchas gracias

    Carlos Bravo

    (@cbravobernal)

    En la función de onChange de puedes pasarle la variable event.target.value

    <label>Choose an ice cream flavor:
      <select class="ice-cream" name="ice-cream">
        <option value="">Select One …</option>
        <option value="chocolate">Chocolate</option>
        <option value="sardine">Sardine</option>
        <option value="vanilla">Vanilla</option>
      </select>
    </label>
    var selectElement = document.querySelector('.ice-cream');
    var extVariable;
    
    selectElement.addEventListener('change', (event) => {
      extVariable = event.target.value;
      alert(extVariable);
    });

    https://codepen.io/c4rl0sbr4v0/pen/YzPKXZE

    PHP no recoge valores al vuelo de un select puesto por fuera de un formulario, para eso tienes que usar Javascript, con Javascript, si se produce una recarga de la pagina las variables se reinicializan, por lo que tendrías que hacer una petición en AJAX y una actualización del DOM, o pasar las variables al PHP con un form con método post.

     <form action="/action_page.php" id="carform">
      Firstname:<input type="text" name="fname">
      <input type="submit">
    </form>
    
    <select name="carlist" form="carform">
      <option value="volvo">Volvo</option>
      <option value="saab">Saab</option>
      <option value="opel">Opel</option>
      <option value="audi">Audi</option>
    </select> 
    Iniciador del debate lcaba

    (@lcaba)

    Muchas gracias Carlos:

    Ese es el problema. Todo eso lo tenía hecho y mediante GET o POST enviar el resultado, pero al ser una web de WordPress el funcionamiento no es el mismo, en la petición de AJAX al poner la url el archivo de Woocommerce (archive-product.php) no me hace caso. He leído por varios sitios en internet, pero estoy cada vez más perdido y ya no se como seguir.

    Lo que necesito es el valor en una variable en PHP posteriormente a la elección para en función de se valor hacer otras cosas. Pero tan solo consigo que la imprima.

    Muchas gracias

    • Esta respuesta fue modificada hace 5 años por lcaba.
Viendo 4 respuestas - de la 1 a la 4 (de un total de 4)
  • El debate ‘javascript – Devolver valor función’ está cerrado a nuevas respuestas.