Разбор строки запроса URL с использованием jquery и вставка значения в текстовое поле? - PullRequest
0 голосов
/ 09 сентября 2010
post.php?replyto=username&othervariable=value

Например, если я щелкаю ссылку с этим URL-адресом, я хочу взять значение replyto=username и вставить значение в текстовое поле с помощью jquery.

function insertParamIntoField(url, param, field) { 
       var anchor = document.createElement('a'), query;
       anchor.value = url;
       query = anchor.query.split('&');

       for(var i = 0, kv; i < query.length; i++) {
          kv = query[i].split('=', 2);
          if (kv[0] == param) {
             field.value = kv[1];
             return;
          }
       }  
    }

    $("a .reply").click(function () {
       insertParamIntoField(this.href, "replyto", $("input .inputField")[0]);
       return false; // prevent default action
    });

это мойHTML-код:

<textarea name="inputField" id="inputField" tabindex="1" rows="2" cols="40"></textarea>
<a class ="reply"  href="home.php?replyto=username">reply</a>

Ответы [ 6 ]

2 голосов
/ 09 сентября 2010
function insertParamIntoField(url, param, field) { 
   var anchor = document.createElement('a'), query;
   anchor.href = url;
   query = anchor.search.substring(1, anchor.search.length).split('&');

   for(var i = 0, kv; i < query.length; i++) {
      kv = query[i].split('=', 2); console.log(kv);
      if (kv[0] == param) {
         field.value = kv[1];
         return;
      }
   }  
}

$("a.reply").click(function () {
   insertParamIntoField(this.href, "replyto", $("textarea.inputField")[0]);
   return false; // prevent default action
});

Функция insertParamIntoField будет работать для любого правильно сформированного URL (в виде строки). Он работает путем создания нового якорного DOMElement (но никогда не присоединяет его к dom) для этого URL, а затем использует встроенные свойства якорных элементов (запрос, хэш и т. Д.) Для извлечения того, что нам нужно.

Если URL-адрес принадлежит элементу привязки, мы можем создать новую версию этой функции, которая использует эту существующую привязку вместо создания новой:

function insertParamIntoField(anchor, param, field) { 
   var query = anchor.search.substring(1, anchor.search.length).split('&'); // anchor is a DOMElement 

   for(var i = 0, kv; i < query.length; i++) {
      kv = query[i].split('=', 2);
      if (kv[0] == param) {
         field.value = kv[1];
         return;
      }
   }  
}

$("a.reply").click(function () {
   insertParamIntoField(this, "replyto", $("textarea.inputField")[0]);
   return false; // prevent default action
});
1 голос
/ 10 сентября 2010

Парсинг URL может быть выполнен с помощью простой функции . Используйте это в своем Javascript:

$.urlParam = function(name){
  var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href);
  return results[1] || 0;
}

Затем вы можете позвонить:

$.urlParam('username');

и он вернет имя пользователя. Итак, чтобы использовать его с текстовым полем, выполните:

$('#textBoxId').val($.urlParam('username'));
0 голосов
/ 17 апреля 2013

Вот некоторый Javascript, который должен вам помочь.Просто возьмите возвращаемое значение из функции getQuerystringNameValue () и используйте $ ("# textboxID"). Val (returnValue);назначить его текстовому полю.

alert("name1" + " = " + getQuerystringNameValue("name1"));
alert("name2" + " = " + getQuerystringNameValue("name2"));
alert("name3" + " = " + getQuerystringNameValue("name3"));


function getQuerystringNameValue(name)
{
    // For example... passing a name parameter of "name1" will return a value of "100", etc.
    // page.htm?name1=100&name2=101&name3=102

    var winURL = window.location.href;
    var queryStringArray = winURL.split("?");
    var queryStringParamArray = queryStringArray[1].split("&");
    var nameValue = null;

    for ( var i=0; i<queryStringParamArray.length; i++ )
    {           
        queryStringNameValueArray = queryStringParamArray[i].split("=");

        if ( name == queryStringNameValueArray[0] )
        {
            nameValue = queryStringNameValueArray[1];
        }                       
    }

    return nameValue;
}
0 голосов
/ 10 сентября 2010

Вы должны быть в состоянии захватить деталь ?replyto=username&othervariable=value с помощью window.location.search, тогда вы должны получить нужную деталь

var print = '?replyto=username&othervariable=value'; // Would be window.location.search in practice
$('textBox').val(print.substr(print.indexOf('replyto=')+8,print.indexOf('&')-(print.indexOf('replyto=')+8)));

1006 *

0 голосов
/ 10 сентября 2010

Используя код из этого SO ответа (что здорово) от Артем Баргер , чтобы получить любой параметр по имени из строки запроса, которую вы можете сделать:

function getParameterByName( name ) 
{ 
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); 
    var regexS = "[\\?&]"+name+"=([^&#]*)"; 
    var regex = new RegExp( regexS ); 
    var results = regex.exec( window.location.href ); 
    if(results == null ) 
        return ""; 
    else 
       return decodeURIComponent(results[1].replace(/\+/g, " ")); 
} 

Затем просто вставьте значение в текстовое поле:

$("#yourTextBox").val(getParameterByName('replyto')); 
0 голосов
/ 09 сентября 2010
$('textarea').val("<?php echo $_GET['replyto']");
...