J'ai un simple code de javascript qui affiche le texte de l'url. exemple: index.html? id = 001 puis sa sortie s'affiche dans la page html comme 001. mais je veux que les données (id = 001) dans la zone de texte html qui affichent uniquement "001" dans la zone de texte.

Voici mon code.

<script type="text/javascript">
function GET() {
var data = [];
for(x = 0; x < arguments.length; ++x)
data.push(location.href.match(new RegExp("/\?".concat(arguments[x],"=","([^\n&]*)")))[1])
return data;
}
</script>

<br />
<script type="text/javascript"> document.write(GET("id")[0]); </script>
<br /><br />
<input type="text" id="" value="" name="" />

En fait, je veux que "001" dans la zone de texte comme valeur de zone de texte.

0
prparmar 8 août 2016 à 22:02

4 réponses

Meilleure réponse

Les expressions régulières sont probablement excessives pour cela, et votre expression ne trouvera la valeur de la chaîne de requête que si elle suit immédiatement le?.

Vous devez utiliser location.search plutôt que l'URL complète, car il vous suffit alors de tout prendre après le premier caractère (qui sera? S'il y a quelque chose), et cela éliminera les hachages.

J'ai utilisé le fractionnement de chaîne simple pour créer une carte réutilisable de paires clé / valeur pour la recherche.

function GET() {
  var data = [];
  for (var i = 0; i < arguments.length; i++) {
    data.push(getQueryMap()[arguments[i]]);
  }
  return data;
}

var queryMap = null;
function getQueryMap() {
  if (queryMap) { return queryMap; }
  queryMap = {};
  var querySplit = location.search.substring(1).split('&');
  for (var i = 0; i < querySplit.length; i++) {
    var thisQuery = querySplit[i].split('=', 2);
    queryMap[thisQuery[0]] = thisQuery[1];
  }
  return queryMap;
}

Pour utiliser l'entrée et obtenir la valeur en elle, vous avez besoin d'un ID dessus ou d'une autre façon de l'identifier:

<input type="text" id="someInput" value="" name="" />

Ensuite, après cela, mettez un script comme ceci:

<script type="text/javascript">
  document.getElementById('someInput').value = GET('id')[0];  
</script>
0
Jeremy Klukan 8 août 2016 à 23:20

Mettez le script après l'entrée puis définissez simplement sa valeur:

<input type="text" id="myInput" value="" name="" />

<script type="text/javascript">
function GET() {
  var data = [];
  for(x = 0; x < arguments.length; ++x)
     data.push(location.href.match(new RegExp("(/\?id=)([^\&]*)"))[2]);
     return data;
  }
  document.getElementById('myInput').value = (GET("id")[0]); 
</script>
2
mcgraphix 8 août 2016 à 19:48

Voici quelques fonctions qui vous aident à analyser les paramètres d'une URL dans un tableau associatif.

function transformToAssocArray(prmstr) {
    var arr = {};
    var prmarr = prmstr.split("&");
    for (var i = 0; i < prmarr.length; i++) {
        var tmparr = prmarr[i].split("=");
        arr[tmparr[0]] = tmparr[1];
    }
    return arr;
}

function getURLParmeters() {
    var prmstr = window.location.search.substr(1);
    if (prmstr === null || prmstr === '' ) {
        return null;
    }
    return transformToAssocArray(prmstr);
}

Ensuite, vous pouvez affecter tous les paramètres d'URL à une variable comme celle-ci:

var params = getURLParameters();

A partir de là, vous pouvez accéder à la valeur du paramètre en référençant params.paramternamehere. Ainsi, pour attribuer la valeur du paramètre "id" à une entrée de texte, saisissez simplement cet élément d'entrée et affectez params.id à la valeur de cette entrée.

var inputElement = document.getElementById("myTextInput");
if (params !== null) {
    inputElement.value = params.id;
}

Cette technique utilise la HTMLHyperlinkElementUtils.search propriété pour séparez de manière fiable les composants d'emplacement d'URL des paramètres, puis effectuez une simple chaîne split pour séparer les paires clé-valeur, puis stocker ces paires dans un tableau associatif.

0
Woodrow Barlow 8 août 2016 à 19:43

Remplacer...

<script type="text/javascript"> document.write(GET("id")[0]); </script>

Avec...

<script type="text/javascript">$('input').val(GET("id")[0]);</script>

Placez cette ligne après la case input.

0
Vicente Olivert Riera 8 août 2016 à 19:13