2011-03-24 21 views
18

Tengo una página html de vainilla que tiene un formulario. Ha ingresado un requisito para poder rellenar previamente el formulario a través de la url. Algo como:¿Cómo puedo rellenar previamente campos de entrada de formulario html desde parámetros de url?

http://some.site.com/somePage.html?forename=Bob&surname=Jones 

Parece que no puedo encontrar una solución simple para esto. ¿Puede alguien señalarme en la dirección correcta con algún javascript para lograr esto? Feliz de usar una solución de javascript, pero preferiría evitar instalar una biblioteca completa solo para este uso (actualmente no se usa ninguna). Gracias.

Respuesta

20

Utilice una función de consulta personalizada de cadena de Javascript.

function querySt(ji) { 

    hu = window.location.search.substring(1); 
    gy = hu.split("&"); 

    for (i=0;i<gy.length;i++) { 
     ft = gy[i].split("="); 
     if (ft[0] == ji) { 
      return ft[1]; 
     } 
    } 
} 
var koko = querySt("koko"); 

A continuación, asigne el valor recuperado al control de entrada; algo así como:

document.getElementById('mytxt').value = koko; 
11
function getUrlVars() 
{ 
    var vars = [], hash; 
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); 

    for(var i = 0; i < hashes.length; i++) 
     { 
     hash = hashes[i].split('='); 
     vars.push(hash[0]); 
     vars[hash[0]] = hash[1]; 
     } 

    return vars; 
} 

var get = getUrlVars(); 

//returns get['forename'] == bob; surname == jones 
+0

Gracias, me gusta el aspecto simple de esto. Mi javascript está un poco oxidado. ¿Puedes describir brevemente '' var vars = [], hash; ''? –

+1

que simplemente declara variables en una lista separada por comas. vars = [] crea una nueva matriz vacía y hash es una variable separada. solo una forma abreviada de declarar 2 a la vez. –

+0

Ah, por supuesto. Estaba asociando erróneamente el '' hash'' con el '' [] ''. –

12

¿Está utilizando PHP? Si es así, eso hace las cosas mucho más fáciles. Suponiendo que su enlace es como el de arriba, puede usar:

<?php 
$forename = $_GET['forename']; 
$surname = $_GET['surname']; 
?> 
---------- 
<input id='forename' type='text' value='<?php echo $forename; ?>' > 
<input id='surname' type='text' value='<?php echo $surname; ?>' > 

Eso debe rellenarlo previamente.

+1

¿Por qué fue este votado? Es una pregunta válida, porque esta sería la forma más fácil de hacerlo. – Metropolis

+0

No fui yo quien votó negativamente, pero me temo que no estoy usando PHP. –

+0

Quizás si paradox870 hubiera precedido su respuesta con algo así como "Veo que la persona que tengo delante contestó el método en javascript, pero también me gustaría señalar que esto se puede realizar en PHP ... de hecho, aquí hay un método para hacer asi que ...". Descubrí que los usuarios de stackoverflow tienden a volverse negativos rápidamente si intentas ayudar más que la pregunta original ... a veces se exageran. Puedo entender esto si no lo hace primero. Responda la pregunta, pero dígale a alguien que lo haga de otra manera, pero en este caso la pregunta había sido respondida, y él simplemente estaba señalando una alternativa. – TheSatinKnight

Cuestiones relacionadas