Foros del Web » Programando para Internet » Javascript »

Crear mas de un campo de form dinamicamente

Estas en el tema de Crear mas de un campo de form dinamicamente en el foro de Javascript en Foros del Web. Buenas... estoy intentando crear unos campos de manera dinamica con Javascript o ajax... si bien en la web hay muchas opciones para crear 1 campo ...
  #1 (permalink)  
Antiguo 06/03/2012, 06:29
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 16 años, 1 mes
Puntos: 175
Crear mas de un campo de form dinamicamente

Buenas... estoy intentando crear unos campos de manera dinamica con Javascript o ajax... si bien en la web hay muchas opciones para crear 1 campo mas.. yo necesito crear un juego de campos.. es decir... asi como se muestra en el ejemplo:

Campo Normal


Creando juego de campos


debido a que pude lograr que cree 1 solo campo ya sea INPUT o SELECT... la idea es que me cree esos juegos de campos, es decir, 2 SELECT y 1 INPUT HIDDEN donde se ve el precio...

Si alguno sabe de la solucion, puede pasarme una mano, tiene algun script hecho o conoce un enlace para crear algo asi.. le estaria enormemente agradecido...

Les paso el que tengo.:

campos.php

Código PHP:
<?php 

if($_POST['hobby']) 


$array=$_POST['hobby']; 
foreach(
$array as $hobby

if(
strlen($hobby)>0

echo 
'<h3>'.$hobby.'<h3/>'
}}} 

?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">
<html> 
<head> 
<title>Jquery Duplicate Fields Submit Form</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script type="text/javascript" src="1.js"></script> 
<script type="text/javascript"> 
$(function(){ 
 var removeLink = ' <a class="remove" href="#" onclick="$(this).parent().slideUp(function(){ $(this).remove() }); return false">remove</a>'; 
$('a.add').relCopy({ append: removeLink});     
}); 
</script> 
<style type="text/css"> 
body{ font-family:Arial, Helvetica, sans-serif; font-size:13px; } 
.remove {color:#cc0000} 
.input{ border: solid 1px #006699; padding:3px} 

</style> 
</head> 

<body> 

  <form method="post" action=""> 
  <p class="clone"> <input type="text" name="hobby[]" class='input'/></p> 
  <p><a href="#" class="add" rel=".clone">sumar campo</a></p> 
  <input type="submit" value=" Enviar " /> 
  </form> 
</body> 
</html>

1.js

Código Javascript:
Ver original
  1. /**
  2.  * jQuery-Plugin "relCopy"
  3.  *  
  4.  * @version: 1.1.0, 25.02.2010
  5.  *  
  6.  * @author: Andres Vidal
  7.  *     [email][email protected][/email]
  8.  *     [url=http://www.andresvidal.com]Andres A. Vidal - User Experience and Information Architecture Consultant[/url]
  9.  *
  10.  * Instructions: Call $(selector).relCopy(options) on an element with a jQuery type selector  
  11.  * defined in the attribute "rel" tag. This defines the DOM element to copy.
  12.  * @example: $('a.copy').relCopy({limit: 5}); // <a href="example.com" class="copy" rel=".phone">Copy Phone</a>
  13.  *
  14.  * @param: string    excludeSelector - A jQuery selector used to exclude an element and its children
  15.  * @param: integer    limit - The number of allowed copies. Default: 0 is unlimited
  16.  * @param: string    append - HTML to attach at the end of each copy. Default: remove link
  17.  * @param: string    copyClass - A class to attach to each copy
  18.  * @param: boolean    clearInputs - Option to clear each copies text input fields or textarea
  19.  *  
  20.  */
  21.  
  22. (function($) {
  23.  
  24.     $.fn.relCopy = function(options) {
  25.         var settings = jQuery.extend({
  26.             excludeSelector: ".exclude",
  27.             emptySelector: ".empty",
  28.             copyClass: "copy",
  29.             append: '',
  30.             clearInputs: true,
  31.             limit: 0 // 0 = unlimited
  32.         }, options);
  33.          
  34.         settings.limit = parseInt(settings.limit);
  35.          
  36.         // loop each element
  37.         this.each(function() {
  38.              
  39.             // set click action
  40.             $(this).click(function(){
  41.                 var rel = $(this).attr('rel'); // rel in jquery selector format                
  42.                 var counter = $(rel).length;
  43.                  
  44.                 // stop limit
  45.                 if (settings.limit != 0 && counter >= settings.limit){
  46.                     return false;
  47.                 };
  48.                  
  49.                 var master = $(rel+":first");
  50.                 var parent = $(master).parent();                        
  51.                 var clone = $(master).clone(true).addClass(settings.copyClass+counter).append(settings.append);
  52.                  
  53.                 //Remove Elements with excludeSelector
  54.                 if (settings.excludeSelector){
  55.                     $(clone).find(settings.excludeSelector).remove();
  56.                 };
  57.                  
  58.                 //Empty Elements with emptySelector
  59.                 if (settings.emptySelector){
  60.                     $(clone).find(settings.emptySelector).empty();
  61.                 };                                
  62.                  
  63.                 // Increment Clone IDs
  64.                 if ( $(clone).attr('id') ){
  65.                     var newid = $(clone).attr('id') + (counter +1);
  66.                     $(clone).attr('id', newid);
  67.                 };
  68.                  
  69.                 // Increment Clone Children IDs
  70.                 $(clone).find('[id]').each(function(){
  71.                     var newid = $(this).attr('id') + (counter +1);
  72.                     $(this).attr('id', newid);
  73.                 });
  74.                  
  75.                 //Clear Inputs/Textarea
  76.                 if (settings.clearInputs){
  77.                     $(clone).find(':input').each(function(){
  78.                         var type = $(this).attr('type');
  79.                         switch(type)
  80.                         {
  81.                             case "button":
  82.                                 break;
  83.                             case "reset":
  84.                                 break;
  85.                             case "submit":
  86.                                 break;
  87.                             case "checkbox":
  88.                                 $(this).attr('checked', '');
  89.                                 break;
  90.                             default:
  91.                              $(this).val("");
  92.                         }                        
  93.                     });                    
  94.                 };
  95.                  
  96.                 $(parent).find(rel+':last').after(clone);
  97.                  
  98.                 return false;
  99.                  
  100.             }); // end click action
  101.              
  102.         }); //end each loop
  103.          
  104.         return this; // return to jQuery
  105.     };
  106.      
  107. })(jQuery);

la fuente de este código, no lo recuerdo... gracias enserio
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #2 (permalink)  
Antiguo 06/03/2012, 06:44
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 16 años, 1 mes
Puntos: 175
Respuesta: Crear mas de un campo de form dinamicamente

perdón.. que infantil mi error.. es decir, mi desatención.. ya logre crear esos campos.. y para que el post no sea en vano.. explico..

Ok.. leyendo un poco el codigo de 1.js, aunque no comprendo mucho de Javascript ni de Ajax, vi que existe un atributo CLASS llamado CLONE.. que hace posible que se creen o se eliminen elementos...

en el archivo campos.php existe una etiqueta del tipo <p> con el class CLONE... todo lo que inserte ahi como campo tipo input, select o similar sera duplicado tal cual... es lo que hice.. insertar dentro de la etiqueta <p>, mis campos y se duplicaron sin problemas...

Espero les sirva a otros
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...

Etiquetas: ajax, dinamicamente, html, input, js, php, formulario, campos
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 20:30.