2016-01-22 3 views
1

Я пытаюсь заполнить поле электронной почты на форме из переменной URL. Ex: https://my.site.org/site/SignupPage.html?email=jsavage980%40gmail.com и работает по большей части, за исключением того, что он не потянул «@» с адреса электронной почты. Вот мой код:заполнить поле электронной почты из переменной url

<script type="text/javascript"> 
     Y.use('jquery-noconflict', function() { 

     function getQuerystring(key, default_) { 
      if (default_ == null) default_ = ""; 
      key = key.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); 
      var regex = new RegExp("[\\?&]" + key + "=([^&#]*)"); 
      var qs = regex.exec(window.location.href); 
      if (qs == null) 
       return default_; 
      else 
       return qs[1]; 
     } 

     var other_value = getQuerystring('email'); 
     other_value = other_value.replace(/(%[a-zA-Z0-9].)/g, ""); 
     other_value = other_value.replace(/(\+)/g, ""); 
     jQuery('#primary_email').val(other_value); 
    }); 
</script> 
not sure what I am missing here... been racking my brain all morning. Any help would be greatly appreciated! Thanks! 
+1

'unescape (" jsavage980% 40gmail.com ")', чтобы получить '@' назад, иначе нет '@', чтобы вытащить – GillesC

+0

'unescape()' устарел – charlietfl

+0

@ GillesC вы предоставили пример кода для этого ? спасибо – jsavage980

ответ

1

Сначала вы должны будете правильно расшифровать ваш URL:

var url = decodeURIComponent(this.location); 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent

document.getElementById('output').textContent = decodeURIComponent(document.getElementById('input').textContent);
<div id="input">https://my.site.org/site/SignupPage.html?email=jsavage980%40gmail.com</div> 
 
<div id="output"></div>

+0

Спасибо @somethinghere ... где бы я реализовал ваш ответ в своем коде? – jsavage980

+0

@ jsavage980 Попробуйте здесь: 'var qs = regex.exec (decodeURIComponent (window.location.href));' – somethinghere

+0

Большое спасибо! прекрасно работает! – jsavage980

0

Я использую этот небольшой JQuery плагин для чтения и декодирования параметров запроса:

/* 
* jQuery plugin to get parse the URI query parameters. 
* E.g. ?a=123&b=567 -> get parameters with $.uriQuery["a"] and $.uriQuery["b"] 
*/ 
(function($) 
{ 
    $.uriQuery = (function() 
    { 
     var a = window.location.search.substr(1).split('&'); 
     var b = {}; 
     if (a!="") 
     { 
      for (var i=0; i<a.length; ++i) 
      { 
       var p = a[i].split('='); 
       if (p.length!=2) 
        continue; 
       b[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " ")); 
      } 
     } 
     var i = window.location.hash.indexOf('?'); 
     if (i>=0) 
     { 
      a = window.location.hash.substr(i + 1).split('&'); 
      if (a!="") 
      { 
       for (var i=0; i<a.length; ++i) 
       { 
        var p = a[i].split('='); 
        if (p.length!=2) 
         continue; 
        b[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " ")); 
       } 
      } 
     } 
     return b; 
    })() 
})(jQuery); 

Часть начиная с var i = window.location.hash.indexOf('?'); не требуется для вашего дела, мне это нужно, чтобы получить параметры запроса из URI, в angularjs программ (angularjs маршрутизатор добавляет #/... к URIs).

Смежные вопросы