Foros del Web » Programando para Internet » Javascript »

Dos Funciones de JavaScript

Estas en el tema de Dos Funciones de JavaScript en el foro de Javascript en Foros del Web. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código HTML: Ver original < html >     < head >       < script src = "http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" >< / script ...
  #1 (permalink)  
Antiguo 24/10/2012, 07:56
Avatar de danramglez  
Fecha de Ingreso: septiembre-2012
Mensajes: 70
Antigüedad: 11 años, 7 meses
Puntos: 2
Dos Funciones de JavaScript

Código HTML:
Ver original
  1.     <head>
  2.       <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
  3.       <script type="text/javascript">
  4.         $(document).ready(function() {
  5.             $('#btnAdd').click(function() {
  6.                 var num     = $('.clonedInput').length; // how many "duplicatable" input fields we currently have
  7.                 var newNum  = new Number(num + 1);      // the numeric ID of the new input field being added
  8.  
  9.                 // create the new element via clone(), and manipulate it's ID using newNum value
  10.                 var newElem = $('#input' + num).clone().attr('id', 'input' + newNum);
  11.  
  12.                 // manipulate the name/id values of the input inside the new element
  13.                 newElem.children(':first').attr('id', 'name' + newNum).attr('name', 'name' + newNum);
  14.  
  15.                 // insert the new element after the last "duplicatable" input field
  16.                 $('#input' + num).after(newElem);
  17.  
  18.                 // enable the "remove" button
  19.                 $('#btnDel').attr('disabled','');
  20.  
  21.                 // business rule: you can only add 10 names
  22.                 if (newNum == 10)
  23.                     $('#btnAdd').attr('disabled','disabled');
  24.             });
  25.  
  26.             $('#btnDel').click(function() {
  27.                 var num = $('.clonedInput').length; // how many "duplicatable" input fields we currently have
  28.                 $('#input' + num).remove();     // remove the last element
  29.  
  30.                 // enable the "add" button
  31.                 $('#btnAdd').attr('disabled','');
  32.  
  33.                 // if only one element remains, disable the "remove" button
  34.                 if (num-1 == 1)
  35.                     $('#btnDel').attr('disabled','disabled');
  36.             });
  37.  
  38.             $('#btnDel').attr('disabled','disabled');
  39.         });
  40.     </script>
  41.  
  42.      
  43.         <meta charset="utf-8" />    
  44.         <title>Ejemplo</title>  
  45.         <link rel="stylesheet" href="http://code.jquery.com/ui/1.9.0/themes/base/jquery-ui.css" />  
  46.         <script src="http://code.jquery.com/jquery-1.8.2.js"></script>
  47.         <script src="http://code.jquery.com/ui/1.9.0/jquery-ui.js"></script>  
  48.         <link rel="stylesheet" href="/resources/demos/style.css" />  
  49.           <script>  
  50.           $(function() {    
  51.           var availableTags = [    
  52.           "ActionScript",      
  53.           "AppleScript",    
  54.           "Asp",      
  55.           "BASIC",      
  56.           "C",      
  57.           "C++",    
  58.           "Clojure",    
  59.           "COBOL",      
  60.           "ColdFusion",
  61.           "Daniel",
  62.           "Mary",  
  63.           "Erlang",        
  64.           "Fortran",    
  65.           "Groovy",    
  66.           "Haskell",  
  67.           "Java",    
  68.           "Berletzis",
  69.           "Xml",
  70.           "web",
  71.           "Lisp",    
  72.           "Perl",      
  73.           "PHP",      
  74.           "Python",  
  75.           "Ruby",    
  76.           "Scala",      
  77.           "Scheme"  
  78.           ];  
  79.               function split( val ) {          
  80.               return val.split( /,\s*/ );        }    
  81.               function extractLast( term ) {        
  82.               return split( term ).pop();      
  83.           }      
  84.            $( "#name" )      
  85.           // don't navigate away from the field on tab when selecting an item        
  86.           .bind( "keydown", function( event ) {          
  87.           if ( event.keyCode === $.ui.keyCode.TAB &&      
  88.           $( this ).data( "autocomplete" ).menu.active ) {  
  89.           event.preventDefault();                }            })    
  90.           .autocomplete({                minLength: 0,              
  91.           source: function( request, response ) {                
  92.           // delegate back to autocomplete, but extract the last term    
  93.           response( $.ui.autocomplete.filter(            
  94.           availableTags, extractLast( request.term ) ) );                },      
  95.           focus: function() {                
  96.           // prevent value inserted on focus          
  97.           return false;                },        
  98.           select: function( event, ui ) {              
  99.           var terms = split( this.value );  
  100.           // remove the current input                
  101.           terms.pop();                
  102.           // add the selected item            
  103.           terms.push( ui.item.value );            
  104.           // add placeholder to get the comma-and-space at the end  
  105.           terms.push( "" );                    this.value = terms.join( ", " );    
  106.           return false;                }            });    });  
  107.           </script>
  108.          
  109.     </head>
  110.  
  111.  
  112. <form id="myForm">
  113.     <div id="input1" style="margin-bottom:4px;" class="clonedInput">
  114.         Nombre:<p class="ui-widget"><label for="name"> <input type="text" class="text" name="name"value="<?php if (isset($posted['name'])) echo $posted['name']; ?>" id="name" /></label>
  115.     <div>
  116.         <input type="button" id="btnAdd" value="Agregar otro nombre" />
  117.         <input type="button" id="btnDel" value="Eliminar nombre" />
  118.     </div>
  119. </form>
  120.  
  121. </body>
  122. </html>


Buen dia podrian ayudarme con estas dos funciones de JavaScript quiero que me agregue un campo nuevo y tambien que lo autocomplete pero no puede hacer las dos gracias por su ayuda
__________________
"La funcion de un buen software es hacerlo parecer simple"
  #2 (permalink)  
Antiguo 24/10/2012, 08:07
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Dos Funciones de JavaScript

Agregá un doctype válido y funciona
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Última edición por emprear; 24/10/2012 a las 08:33 Razón: ortografía
  #3 (permalink)  
Antiguo 24/10/2012, 08:10
Avatar de danramglez  
Fecha de Ingreso: septiembre-2012
Mensajes: 70
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: Dos Funciones de JavaScript

Y cual seria un doctype valido ? gracias
__________________
"La funcion de un buen software es hacerlo parecer simple"
  #4 (permalink)  
Antiguo 24/10/2012, 08:40
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Dos Funciones de JavaScript

Cita:
Iniciado por danramglez Ver Mensaje
Y cual seria un doctype valido ? gracias
Tu pregunta sorprende, ¿como podés estar haciendo una página que involucra un javascrip complejo, jQuery, php y no tener idea de que es o cual es la función de un doctype?

http://es.wikipedia.org/wiki/Declara...o_de_documento
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 24/10/2012, 10:13
Avatar de danramglez  
Fecha de Ingreso: septiembre-2012
Mensajes: 70
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: Dos Funciones de JavaScript

Ahhh te referias a eso, no t habia entendido
__________________
"La funcion de un buen software es hacerlo parecer simple"
  #6 (permalink)  
Antiguo 24/10/2012, 11:26
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Dos Funciones de JavaScript

Eso del doctype está muy bien si quieres pasar el 3wc validator, pero si lo que de verdad quieres es que funcione tu código, mira estos cambios:

Código HTML:
Ver original
  1.     <head>
  2.       <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
  3.         <meta charset="utf-8" />    
  4.         <title>Ejemplo</title>  
  5.         <link rel="stylesheet" href="http://code.jquery.com/ui/1.9.0/themes/base/jquery-ui.css" />  
  6.         <script src="http://code.jquery.com/jquery-1.8.2.js"></script>
  7.         <script src="http://code.jquery.com/ui/1.9.0/jquery-ui.js"></script>  
  8.         <link rel="stylesheet" href="/resources/demos/style.css" />  
  9.           <script>    
  10.           var availableTags = [    
  11.           "ActionScript",      
  12.           "AppleScript",    
  13.           "Asp",      
  14.           "BASIC",      
  15.           "C",      
  16.           "C++",    
  17.           "Clojure",    
  18.           "COBOL",      
  19.           "ColdFusion",
  20.           "Daniel",
  21.           "Mary",  
  22.           "Erlang",        
  23.           "Fortran",    
  24.           "Groovy",    
  25.           "Haskell",  
  26.           "Java",    
  27.           "Berletzis",
  28.           "Xml",
  29.           "web",
  30.           "Lisp",    
  31.           "Perl",      
  32.           "PHP",      
  33.           "Python",  
  34.           "Ruby",    
  35.           "Scala",      
  36.           "Scheme"  
  37.           ];  
  38.           function split( val ) {          
  39.           return val.split( /,\s*/ );        }    
  40.           function extractLast( term ) {        
  41.           return split( term ).pop();      
  42.           }
  43.             function focusear(nodo){
  44.             nodo.bind( "keydown", function( event ) {          
  45.               if ( event.keyCode === $.ui.keyCode.TAB &&      
  46.               $( this ).data( "autocomplete" ).menu.active ) {  
  47.               event.preventDefault();                }            }).
  48.               autocomplete({                minLength: 0,              
  49.               source: function( request, response ) {                
  50.               // delegate back to autocomplete, but extract the last term    
  51.               response( $.ui.autocomplete.filter(            
  52.               availableTags, extractLast( request.term ) ) );                },      
  53.               focus: function() {                
  54.               // prevent value inserted on focus          
  55.               return false;                },        
  56.               select: function( event, ui ) {              
  57.               var terms = split( this.value );  
  58.               // remove the current input                
  59.               terms.pop();                
  60.               // add the selected item            
  61.               terms.push( ui.item.value );            
  62.               // add placeholder to get the comma-and-space at the end  
  63.               terms.push( "" );                    this.value = terms.join( ", " );    
  64.               return false;                }            });
  65.              
  66.           }
  67.            
  68.  
  69.         $(function() {
  70.             $('#btnAdd').click(function() {
  71.                 var num     = $('.name').length; // how many "duplicatable" input fields we currently have
  72.                 var newNum  = new Number(num + 1);      // the numeric ID of the new input field being added
  73.  
  74.                 // create the new element via clone(), and manipulate it's ID using newNum value
  75.                 var newElem = $('<input type="text" class="text name" name="name" value="" />').attr('id', 'name' + newNum).attr('name', 'name' + newNum);
  76.  
  77.                 // insert the new element after the last "duplicatable" input field
  78.                 $('#name' + num).after(newElem);
  79.  
  80.                 // enable the "remove" button
  81.                 $('#btnDel').removeAttr('disabled');
  82.  
  83.                 // business rule: you can only add 10 names
  84.                 if (newNum == 10)
  85.                     $('#btnAdd').attr('disabled','disabled');
  86.                    
  87.                 focusear(newElem);
  88.             });
  89.  
  90.             $('#btnDel').click(function() {
  91.                 var num = $('.name').length; // how many "duplicatable" input fields we currently have
  92.                 $('#name' + num).remove();     // remove the last element
  93.  
  94.                 // enable the "add" button
  95.                 $('#btnAdd').removeAttr('disabled');
  96.  
  97.                 // if only one element remains, disable the "remove" button
  98.                 if (num == 2)
  99.                     $('#btnDel').attr('disabled','disabled');
  100.             });
  101.  
  102.             $('#btnDel').attr('disabled','disabled');
  103.            
  104.             focusear($("#name1"));  
  105.         });
  106.     </script>
  107.          
  108.     </head>
  109.  
  110.  
  111. <form id="myForm">
  112.     <div id="input1" style="margin-bottom:4px;" class="clonedInput">
  113.         Nombre:<p class="ui-widget"><label for="name"> <input type="text" class="text name" name="name1" value="" id="name1" /></label>
  114.     <div>
  115.         <input type="button" id="btnAdd" value="Agregar otro nombre" />
  116.         <input type="button" id="btnDel" value="Eliminar nombre" />
  117.     </div>
  118. </form>
  119.  
  120. </body>
  121. </html>

No eliminabas bien el atributo "disabled" de los elementos.
Al clonar los elementos, además de clonar los botones innecesariamente, también clonabas los métodos del "autocomplementar", que darán problemas (por ejemplo, el FOCUS siempre te manda al focus del primer elemento, ya que has clonado sus métodos y eventos). Lo que hay que hacer es convertir el input:text en un autocompletar cada vez que se cree. No solo al principio.
Y otros fallos menores como tener separado código en común en dos scripts diferentes con sus propios ámbitos.
  #7 (permalink)  
Antiguo 24/10/2012, 11:43
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Dos Funciones de JavaScript

Script original
http://foros.emprear.com/html/2f.html

Script original + con Doctype
http://foros.emprear.com/html/2fdoctype.html

Las dos funcionan, por ejemplo, en Chrome, Firefox, pero no funcionarán en IE sin el Doctype. Me limito a la generación de elementos y el "autocompletar"

Si bien no lo aclara, no me extrañaría que la haya visto en IE

Las estadísticas globales situan el uso de IE9/8 en un 20% aproximadamente, y en estadísticas regionalizadas ese número aumenta. Son porcentuales lo suficientemente grandes como para tenerlos en cuenta a la hora de diseñar.

__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #8 (permalink)  
Antiguo 24/10/2012, 11:49
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Dos Funciones de JavaScript

En realidad, tus dos enlaces funcionan mal. O lo que es lo mismo, no funcionan. Prueba el que le puse y busca las diferencias.

Por suerte o por desgracia, la compaía donde trabajo y sus clientes ignorarn Internet Explorer en todas sus versiones, asi que no lo tengo en cuenta para hacer pruebas por costumbre.
  #9 (permalink)  
Antiguo 24/10/2012, 11:52
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Dos Funciones de JavaScript

--Mierda, doble post--
  #10 (permalink)  
Antiguo 24/10/2012, 12:21
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Dos Funciones de JavaScript

Cita:
Iniciado por marlanga Ver Mensaje
En realidad, tus dos enlaces funcionan mal. O lo que es lo mismo, no funcionan. Prueba el que le puse y busca las diferencias.

Por suerte o por desgracia, la compaía donde trabajo y sus clientes ignorarn Internet Explorer en todas sus versiones, asi que no lo tengo en cuenta para hacer pruebas por costumbre.
Cita:
@danramglez:
me agregue un campo nuevo y tambien que lo autocomplete
Ambos objetivos se cumplen, con las limitaciones que observé antes, vaya a saber con que y como lo estás viendo

Cita:
@marlanga:
la compaía donde trabajo y sus clientes ignorarn Internet Explorer en todas sus versiones
esa es la política del aveztruz
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #11 (permalink)  
Antiguo 24/10/2012, 12:54
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Dos Funciones de JavaScript

Es mejor que la política del topo. Ambos objetivos no se cumplen, sólo tienes que probarlo.
Ahora dejemos que venga el usuario y que responda quién le ha resuelto el problema que tenía.

Mi compañía simplemente sigue los estándares. No hacemos páginas webs para la peluquería de la tía pepa.
Cuando a explorer le salga del pito seguirlos, funcionará. El 10 parece que será el primero donde explorer no se pase los estándares de la W3C por el forro. Aunque seguirá sin soportar webGL, y los websockets veremos a ver a qué nivel.

Última edición por marlanga; 24/10/2012 a las 13:05

Etiquetas: ajax, funcion, funciones, html, input, js, 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 10:31.