2009-10-20 7 views
0

Cela peut sembler bizarre, mais je veux être capable de remplir un formulaire Web statique en utilisant les valeurs transmises via une liste de paramètres GET.Réinitialiser les valeurs d'entrée à partir des paramètres d'url GET en utilisant jQuery

Dire que j'ai une page, « self.html »:

<form action="self.html" method="get" accept-charset="utf-8"> 
    <label for = "40">New Question?</label> 
    <input type="radio" name="40" id="40" value="Yes"> Yes &nbsp; 
    <input type="radio" name="40" id="40" value="No"> No 
    <label for = "41">What's your favourite colour?</label> 
    <input type="text" name="43" value="" id="41"> 
</form> 

J'ai besoin le formulaire pour se soumettre chaque fois qu'une entrée change:

$(document).ready(function(){ 
    $('input').change(function(){ 
     $("form:first").submit(); 
    }); 
    // collate_results(); 
    }); 

mais il est évident que je veux garder les valeurs , de sorte qu'ils ne sont pas réinitialisés sur le rechargement.

(Pourquoi? Parce que je le fais dans une vue Web FileMaker, et la seule façon de tirer des données sur un formulaire est d'obtenir l'URL source - et l'analyser ... donc je dois url à mise à jour pour refléter l'état actuel de la forme, et aussi être en mesure de transmettre dans les données pour tous les nouveaux enregistrements que je veux afficher ...)

MISE à jOUR:

Voici mon code non-travail - il est très bien champs de valeur unique, mais échoue pour les boutons radio ...

$('input').change(function(){ 
    $("form:first").submit(); 
}); 
var qString = jQuery.url.attr("query"); 
if(qString) { 
    qString = qString.split("&"); 
    $(qString).each(function() { 
    var parts = this.split("="); 
    var item = $('#'+parts[0]); 
    if($(item).attr('type') == 'text') { 
     $('#'+parts[0]).val(parts[1]); 
    }; 
    if($(item).attr('type') == 'radio') { 
     $(item).each(function() { 
     console.log(this); 
     if($(this).val() == parts[1]) { 
      $(this).attr('checked','checked'); 
     } else { 
      $(this).attr('checked',''); 
     } 
     }); 
    }; 
    }) 
} 
}); 

Le problème est que I aura avoir plusieurs boutons radio avec des valeurs de oui, non, na sur le formulaire, de sorte que la façon dont jQuery veut le faire ne semble pas s'appliquer. Je peux ré-id le bouton radio si cela aide ...

<form action="self.html" method="get" accept-charset="utf-8"> 
    <label for = "40">New Question?</label> 
    <input type="radio" name="47" id="47_yes" value="Yes">Yes &nbsp; 
    <input type="radio" name="47" id="47_no" value="No" checked> No 
    <label for = "48">What's your favourite colour?</label> 
    <input type="text" name="48" value="" id="48"> 
</form> 

Répondre

0

est ici quelque chose qui fonctionne en quelque sorte ... mais toujours des problèmes avec le codage URL et le décodage des valeurs ...

$(document).ready(function(){ 
    $('input').change(function(){ 
    $("form:first").submit(); 
    }); 
    var qString = jQuery.url.attr("query"); 
    if(qString) { 
    qString = qString.split("&"); 
    $(qString).each(function() { 
     var parts = this.split("="); 
     var items = $("input[name^='"+parts[0]+"']"); 
     var myval = decodeURI(parts[1]); 
     $(items).each(function() { 
     var item = this; 
     if($(item).attr('type') == 'text') { 
      $('#'+parts[0]).val(myval); 
     }; 
     if($(item).attr('type') == 'radio') { 
      if($(item).val() == myval) { 
      $(item).attr('checked','checked'); 
      } else { 
      $(item).attr('checked',''); 
      } 
     }; 
     }); 
    }) 
    } 
}); 
0

Une meilleure façon de mettre en œuvre AJAX soumettre chaque fois que l'entrée change.
Mais pour lire les paramètres GET, vous pouvez utiliser ce plugin http://www.mathias-bank.de/2007/04/21/jquery-plugin-geturlparam-version-2/ pour jQuery.

+0

pour FileMaker à lire les valeurs d'entrée de forme que je dois mettre l'EEG params dans la URL donc pas sûr de savoir comment AJAX aiderait dans ce cas. J'utilise jQuery.url.attr ("query") pour obtenir la chaîne de requête ... maintenant seulement besoin de comprendre comment réinitialiser les boutons radio des paramètres GET sans changer de nom ou d'identifiant ... – Dycey

+0

Eh bien, si vous avez le params déjà alors il devrait être seulement une question de remplir les valeurs - '$ ('entrée [nom =' + urlParam [i] .nom + ']'). val (urlParam [i] .value);' –

+0

.. .except pour les boutons radio ... – Dycey

Questions connexes