Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] ¿Como crear input dinamico a partir de un select?

Estas en el tema de ¿Como crear input dinamico a partir de un select? en el foro de Javascript en Foros del Web. hola compañeros, tengo un problema y espero me puedan ayudar, primero aclaro que no manejo Javascript, mis enfoques van dirigidos a php y SQL, ahora ...
  #1 (permalink)  
Antiguo 17/10/2015, 13:03
 
Fecha de Ingreso: mayo-2015
Ubicación: Medellín
Mensajes: 33
Antigüedad: 8 años, 11 meses
Puntos: 1
¿Como crear input dinamico a partir de un select?

hola compañeros, tengo un problema y espero me puedan ayudar, primero aclaro que no manejo Javascript, mis enfoques van dirigidos a php y SQL, ahora les comparto el codigo y aclaro cual es mi objetivo.

Mi objetivo es:
Cuando el usuario no encuentra dentro del select la opcion donde quiere guardar su tema, crea uno nuevo, pero no se como hacerlo con Javacript, si se hacerlo con PHP, pero el problema es que requiriria un actualizar el navegador y no es conveniente, bueno, deseo que cuando seleccione le option, Anadir nuevo, debajo me cree un campo input donde me escriba su nueva categoria, que el usuario crea conveniente, el problema es que llevo largos minutos y no logro hacerlo,

codigo java script:
Código:
<script type="text/javascript">
					function crearcampo() {
					var o = document.createElement("input");
					o.type = "text";
					o.name = "lalala";
					o.value = "";
					document.getElementById("aqui").;
					}
</script>
codigo html:

Código:
<select>
AQUI HAGO UN LLAMAMIENTO A MI DB Y TRAIGO LA LISTA DEL SELECT, QUE TODOS LOS DIAS SE ACTUALIZA, GRACIAS A LOS USUARIOS.
<option value="nuevotext" onclick="crearcampo()">Añadir nuevo</option>
</select>
<p></p>
<div id="aqui"></div>
<p></p>
  #2 (permalink)  
Antiguo 18/10/2015, 06:47
 
Fecha de Ingreso: agosto-2015
Ubicación: En Carúpano
Mensajes: 49
Antigüedad: 8 años, 8 meses
Puntos: 12
Respuesta: ¿Como crear input dinamico a partir de un select?

Puedes usar AJAX y PHP
Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <meta charset="UTF-8">
  4. <title>Document</title>
  5. </head>
  6. <select id="Sel">
  7. AQUI HAGO UN LLAMAMIENTO A MI DB Y TRAIGO LA LISTA DEL SELECT, QUE TODOS LOS DIAS SE ACTUALIZA, GRACIAS A LOS USUARIOS.
  8. <option value="0">Seleccione una opcion</option>
  9. <option value="nuevotext" onselect="crearcampo()">Añadir nuevo</option>
  10. <option value="msg">Mensaje</option>
  11. <p></p>
  12. <div id="aqui"></div>
  13. <p></p>
  14.  
  15. <div id="notice" style="display:none;width:200px;heigth:200px;color:red;font-size:40px">Agradecer No cuesta Nada</div>
  16. </body>
  17. </html>

codigo JS al final del documento:
Código Javascript:
Ver original
  1. document.getElementById("Sel").onclick = function(){
  2. Sel = this
  3. newOption = function(){
  4. if(Sel.value){
  5. var Nombre = prompt("Por Favor, Escriba aqui el nombre de la opcion a agregar")
  6. //metodo GET
  7. ajaxG = new XMLHttpRequest()
  8. ajaxG.onreadystatechange = function() {
  9. //aqui especifico que si la solicitud AJAX fue exitosa, que escriba el option que generaras con php usando los datos enviados y de una vez los aregas a tu DB
  10. if (ajaxG.readyState == 4 && ajaxG.status == 200) {
  11. aa =  ajaxG.responseText;
  12. response2 = document.createElement("div")
  13. response2.innerHTML = aa
  14. newop2 = response2.querySelectorAll("option")[0].outerHTML
  15. //abajo de esto es donde escribo el contenido del Select que generaste con PHP
  16. Sel.innerHTML += newop2||''
  17.  
  18. }
  19. }
  20. //aqui envio los datos Nombre y el numero de Elementos que tiene como hijos el Select para que asi con ese dato crees el indice o el value del elemento
  21. //y en donde dice index.html ponle el documento PHP que creara el select y despues de ?, ya debes saberlo pero, ahi es donde pones las variables que seran enviadas al servidor index?Name=jj&IndiceSelect=2
  22. ajaxG.open("POST","index.html?Name="+Nombre+"&IndicedelSelect="+Sel.childElementCount,true)
  23. ajaxG.send(null);
  24. //Fin
  25. }
  26. }
  27.  
  28. if(Sel.value == "nuevotext"){
  29. newOption()
  30. Sel.value = '0'
  31. }
  32.  
  33.  
  34. ////////////////////////////////////////////////////////////
  35. if(Sel.value == "msg"){
  36.     console.log('Agradecer No cuesta Nada');
  37.     document.getElementById("notice").style.display = 'block'
  38.  
  39.     Sel.value = '0'
  40. }
  41. ///////////////////////////////////////////////////////////
  42. }
  43. //espero que puedas entender bien mi codigo y puedas mejorarlo
  44. //No Te tomara Mucho tiempo si te ayude, El decir las gracias

Y sobre el contenido del Otro Archivo
Este es un EJEMPLO:
Código HTML:
Ver original
  1. <option value="2">EJEMPLO</option>
  #3 (permalink)  
Antiguo 18/10/2015, 07:53
 
Fecha de Ingreso: mayo-2015
Ubicación: Medellín
Mensajes: 33
Antigüedad: 8 años, 11 meses
Puntos: 1
Respuesta: ¿Como crear input dinamico a partir de un select?

Hola compañero, dos cositas, gracias por el aporte, y dos, no me funciono :(, no me ejecuta, no se si lo estoy haciendo mal, inserte el script como normalmente lo hago, pero nada, ya probe que me sirva el navegador y ejecute otros script que tengo y corren :) osea que es el codigo que no funciona o que yo halla hecho algo mal.

Por otro lado, ¿Se puede hacer de PURO javascript? osea el simple como esta funcion:

Código HTML:
function crearcampo() {
					var o = document.createElement("input");
					o.type = "text";
					o.name = "lalala";
					o.value = "";
					document.getElementById("aqui").;
					}
en teoria esto deveria funcionar cuando lo llamo, pero nada, me funcionan otros menos este acaso hay un error, porque cuando lo llamo me deveria crear el input???.

LO UNICO QUE QUIERO ES QUE CUANDO SE SELECCIONE ANADIR NUEVO SE ME CREE UN CAMPO DEBEJO Y CUANDO CAMBIEN AÑADIR NUEVO POR OTRO SE QUITE, YA NO ES MAS :).

en algun punto de vida yo tuve que haber hecho eso, pero en estos momentos no recuerdo, yo se que esta en algunos de miss proyectos, pero es que empezar a mirar codigos de proyectos antiguos mata
  #4 (permalink)  
Antiguo 18/10/2015, 09:36
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: ¿Como crear input dinamico a partir de un select?

A lo que tienes hecho, solo te falta añadir el método .appendChild(), el cual adhiere un elemento HTML al final del elemento especificado.

Código Javascript:
Ver original
  1. document.getElementById("aqui").appendChild(o);

Y para quitar elementos, utiliza el método .removeChild().

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 18/10/2015, 10:54
 
Fecha de Ingreso: mayo-2015
Ubicación: Medellín
Mensajes: 33
Antigüedad: 8 años, 11 meses
Puntos: 1
Respuesta: ¿Como crear input dinamico a partir de un select?

Hola gracias por responder, añadi lo que me enviaste, pero nada, no ejecuta, voy a pasar todo el codigo, para que miren si depronto hay un error, si me pueden colaborar, grazie.

Código PHP:
<!DOCTYPE html2>
<html>
<?php
    session_start
();
    
$_SESSION['Logueado']="SI";
    
ob_start();
    if (isset(
$_SESSION['Logueado']) && $_SESSION['Logueado'] == "SI"
    {
        
$visible "SI";
        
$_SESSION['seccion']="PAGE-";
        include_once (
'../../Configuracion/Ruta.php');
        include_once (
$_SESSION['ruta'].'Configuracion/Constantes.php');
        echo 
'
        <head>
        <script type="text/javascript" src="'
.$_SESSION['ruta'].'Recursos/ckeditor/ckeditor.js"></script>
        <link rel="stylesheet" href="'
; echo $_SESSION['ruta'].CSSestandar; echo '" type="text/css" />
        <link rel="stylesheet" href="'
.$_SESSION['ruta'].'Lenguajes/CSS/Aporte.css" type="text/css" />
        <meta content="text/html; charset=UTF-8" http-equiv="content-type" />
        <title>Aporte ~ '
.Nombre.'</title>
        <script type="text/javascript">
                    function crearcampo() {
                    var o = document.createElement("input");
                    o.type = "text";
                    o.name = "lalala";
                    o.value = "";
                    document.getElementById("nuelemento").appendChild(o);
                    }
        </script>
        </head>
        
    <body onload="document.faporte.title.focus()">
        <div id="Opacidad"></div>'
;
        include_once (
$_SESSION['ruta'].'Estandares/Logo.php');
        include_once (
$_SESSION['ruta'].'Estandares/Menu.php');
        echo 
'
        <div id="Contenedor-Total">
            <div id="TituloP">Haz tu Aporte</div>
            <div id="CuerpoP">'
;
                include_once (
$_SESSION['ruta'].'Recursos/Publicidad/index.php');
                echo 
'<form action="" name="faporte" method="post">
                    <div class="texto">Titulo:</div><input type="text" name="title" placeholder="Ej: un tema o pregunta" class="Campos" />
                    <p></p>
                    <div class="texto">Articulo:</div><div class="descri"><textarea name="editor"></textarea></div>
                        <script type="text/javascript">
                            CKEDITOR.replace("editor");
                        </script>
                    <p></p>
                    <div class="texto">Clasificación:</div>
                        <select name="Opcion" id="SelectBuscador" class="Campos">
                            <option value="art">Articulo</option>
                            <option value="exp">Explicación</option>
                            <option value="inv">Investigación</option>
                            <option value="ref">Reflexión</option>
                        </select>
                    <p></p>
                    <div class="texto">Tema central:</div>
                        <select name="Opcion" id="SelectBuscador" class="Campos">'
;
                            include_once (
$_SESSION['ruta'].'Configuracion/Conect.php');
                            
$query "SELECT * FROM Listaarticulo"
                            
$resultado=mysqli_query($con$query) or die ("Error al ejecutar, Lamentamos las molestias.");
                            while (
$txDB mysqli_fetch_array($resultado))
                            {
                                echo 
'<option value="NOM'.$i.'">'.$txDB[1].'</option>';
                            }

                    echo 
'<option value="nuevotext" onclick="crearcampo()">Añadir nuevo</option>
                    </select>
                    <p></p>
                    <div id="nuelemento"></div>
                    <p></p>
                    <div class="texto">TAGs:</div><input type="text" name="mtitle" placeholder="Palabras claves de busqueda" class="Campos" />
                    <p></p>
                    <input type="submit" name="boton" value="Postear" class="pos">
                    <p></p>
                </form>
            </div>
        </div>
    </body>'
;
    }
?>
  #6 (permalink)  
Antiguo 18/10/2015, 23:12
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: ¿Como crear input dinamico a partir de un select?

Fíjate en la consola del navegador (pulsa la tecla F12) si hay mensajes de error o advertencias.

Como comentario aparte, sería mejor si no mezclaras códigos de distintos lenguajes. Sería más ordenado y legible.

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 19/10/2015, 06:32
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: ¿Como crear input dinamico a partir de un select?

el error está en asignale al option el evento onclik(). asignale al select el evento onchange() y pasale el valor del option seleccionado
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #8 (permalink)  
Antiguo 19/10/2015, 09:43
Avatar de Cassers  
Fecha de Ingreso: octubre-2015
Mensajes: 16
Antigüedad: 8 años, 6 meses
Puntos: 3
Respuesta: ¿Como crear input dinamico a partir de un select?

no estoy muy seguro de lo que quieres pero pues, supongo que en ultimas es agregar una opcion al select, es super facil XD.

Código Javascript:
Ver original
  1. var select = document.getElementById("myselect");
  2. select.options[select.options.length] = new Option("Texto","Value");
  #9 (permalink)  
Antiguo 19/10/2015, 10:38
 
Fecha de Ingreso: mayo-2015
Ubicación: Medellín
Mensajes: 33
Antigüedad: 8 años, 11 meses
Puntos: 1
Respuesta: ¿Como crear input dinamico a partir de un select?

hola casser y los demas, miren lo que quiero es simple...
Cuando se seleccione en el <select> la </select<option vale="nuevo">añadir nuevo elemento</option> ME CREE UN INPUT TYPE TEXT EN UN DIV FUERA DEL SELECT,

Pero que se haga sin recargar la pagina.

Y cuando se quite la opcion <option vale="nuevo">añadir nuevo elemento</option> se quite el campo.

tambien estaba pensado como respondio uno con el onchange, pero el problema es que no se como hace un if de un option en un javascript, ya que no lo manejo.

estaba pensado en:
function Actselect() {
if (option=="vuebo"){
input.type="text"; EN EL DIV LO TENGO COMO HIDDEN (OCULTADO)
}
else {
input.type="hidden";
}
}

cuando cambie el select llame a la function, pero no se como hacerlo en javascript, si me colaboran con el codigo que acabe de mostrar hay tipo algoritmo, les agradeceria que alguien que maneja js me lo traduzca a a ese lenguaje, gracias.
  #10 (permalink)  
Antiguo 19/10/2015, 11:15
Avatar de Cassers  
Fecha de Ingreso: octubre-2015
Mensajes: 16
Antigüedad: 8 años, 6 meses
Puntos: 3
Respuesta: ¿Como crear input dinamico a partir de un select?

vale entiendo, entonces te paso un html que hace eso

Código HTML:
Ver original
  1.     <head>
  2.         <meta charset="utf-8">
  3.         <meta http-equiv="expires" content="-1" />
  4.         <title>Problema</title>
  5.     </head>
  6.     <body>
  7.         <select id="myselect" onchange="mostrar_control()">
  8.             <option value="1">opción1</option>
  9.             <option value="2">opción2</option>
  10.             <option value="3">opción3</option>
  11.             <option value="4">opción4</option>
  12.             <option value="5">opción5</option>
  13.             <option value="Nuevo">añadir nuevo elemento</option>
  14.         </select>
  15.         <input id="Texto" type="text" style="visibility: hidden">
  16.     </body>
  17. </html>
  18.  
  19.     function mostrar_control(){
  20.         var select = document.getElementById("myselect");
  21.         var inputText = document.getElementById("Texto");
  22.         if(select.options[select.selectedIndex].value == "Nuevo"){
  23.             inputText.style.visibility = "visible";
  24.         }else{
  25.             inputText.style.visibility = "hidden";
  26.         }
  27.     }
  #11 (permalink)  
Antiguo 19/10/2015, 11:22
 
Fecha de Ingreso: mayo-2015
Ubicación: Medellín
Mensajes: 33
Antigüedad: 8 años, 11 meses
Puntos: 1
Respuesta: ¿Como crear input dinamico a partir de un select?

gracias, tu codigo esta bueno, aunque del tuyo saque uno simplificado, gracias de verdad.

Etiquetas: dinamico, html, input, php, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:31.