2010-07-28 10 views
5

Tengo una pregunta muy fácil. Desafortunadamente, no puedo encontrar la respuesta.jQuery carácter múltiple reemplazar

acabo de hacer 2 funciones de entrada simples

Input 1:<br /><input type="text" id="i1" name="i1" /> 
Input 2:<br /> 
<input type="text" id="i2" name="i2" /> 

Al cambiar la entrada 1, quiero que aparezca el resultado en la entrada 2. También quiero algunos caracteres siendo reemplazados y quiero hacer que los caracteres en minúsculas (para usarlo como una url).

Hice, pues, el siguiente código de jQuery:

$("#i1").keyup(function() { 
var ptitle = $("#i1").val(); 
$("#2").val(ptitle.replace(" ", "-").toLowerCase()); 
}); 

Esto funciona bien, excepto cuando introduzco una cadena que tiene varias veces el mismo carácter de reemplazar. Entonces solo reemplaza la primera vez.

Por ejemplo: Cuando escribo la entrada 1: 'Acerca de esta empresa', dará como resultado la entrada 2: 'sobre-esta empresa'. Debería ser: 'sobre-esta-compañía'. ¿Alguien sabe qué está mal en mi código jQuery?

Respuesta

9

Algo como esto:

$("#i1").keyup(function() { 
    var ptitle = $(this).val(); 
    $("#i2").val(ptitle.replace(/\s/g, "-").toLowerCase()); 
}); 
+0

Wow, eso fue extrema rapidez. Y tú resolviste mi problema. ¡Muchas gracias! –

+0

No hay problema, veo que muchas personas tienen la misma respuesta. Cambié el '$ (" # i2 ")' con el 'i' en él (de acuerdo con su ejemplo) y agregué el regexp'/\ s/g' en lugar de su '" "'. – jerone

+1

Asegúrese de que quiere decir \ s en lugar de '', la diferencia es que \ s representa todos los espacios en blanco [\ f \ n \ r \ t \ v \ u00A0 \ u2028 \ u2029]. Esto puede estar bien para ti, pero sería negligente si no lo mencionara. – Marc

2

Esto se debe reemplazar requiere un indicador global para reemplazar varias instancias.

probar este

$("#i1").keyup(function() { var ptitle = $("#i1").val(); 
     $("#2").val(ptitle.replace(/ /g, "-").toLowerCase()); 
}); 

He aquí una pregunta muy cerca de la suya con una buena respuesta:
Replacing spaces with underscores in JavaScript?

+0

¡Muchas gracias por su respuesta! ¡El problema esta resuelto! –

0

esto funciona para mí

$(function(){ 
    $("#i1").keyup(function() { 
    var ptitle = $("#i1").val(); 
    $("#i2").val(ptitle.replace(/ /g,"-").toLowerCase()); 
    }); 
}); 
Cuestiones relacionadas