Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/03/2012, 06:29
Avatar de loncho_rojas
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...