2015-09-04 101 views
0

這是我瘋狂,我已經沒有運氣各地到處尋找解決方案...填充形式輸入傳遞數據

我有一個使用的Aweber申請表單,表單註冊頁面 - 它收集全名和電子郵件地址。

這種形式提交,並重定向到第二頁(確認頁),並通過對URL的末尾值:

?email=dummyemail%40gmail.com&from=dummyemail%40gmail.com&listname=awlist4009916&meta_adtracking=stillhead&meta_message=1&meta_required=name%2Cemail&meta_split_id=&meta_tooltip=&meta_web_form_id=1277063733&name=Example%20Name 

現在,Aweber提供的JavaScript塊放置在確認頁面似乎抓住表單數據並使其可用於頁面。

<script type="text/javascript"> 
var formData = function() { var query_string = (location.search) ? ((location.search.indexOf('#') != -1) ? location.search.substring(1, location.search.indexOf('#')) : location.search.substring(1)) : ''; 
var elements = []; 
if(query_string) {  
    var pairs = query_string.split("&");  
    for(i in pairs) {  
     if (typeof pairs[i] == 'string') {   
      var tmp = pairs[i].split("=");   
      var queryKey = unescape(tmp[0]);   
      queryKey = (queryKey.charAt(0) == 'c') ? queryKey.replace(/\s/g, "_") : queryKey; 
      elements[queryKey] = unescape(tmp[1]);  
      }  
     } 
} 
return {  
    display: function(key) {   
     if(elements[key]) {   
      document.write(elements[key]);   
     } 
     else {   
       document.write("<!--If desired, replace everything between these quotes with a default in case there is no data in the query string.-->");   
      }  
    } 
} 
} 
(); </script> 

然後他們說,打電話的電子郵件地址使用此:

<script type="text/javascript">formData.display("email")</script> 

其中一期工程。我有這麼多。

我現在想要做的是,而不是顯示電子郵件地址,我想用這些數據填充表單字段。

表單字段坐在由WordPress插件(因此爲什麼我不能只跳在那裏)產生的形式,並且將其輸出的塊:

<li class="swpm-item swpm-item-email " id="item-swpm-5"> 
    <label for="swpm-5" class="swpm-desc">Email <span class="swpm-required-asterisk">*</span></label> 
    <span class="swpm-span"> 
     <input type="email" name="swpm-5" id="swpm-5" value="" class="swpm-text swpm-medium required email "><p>Email</p> 
    </span> 
</li> 

我曾嘗試用jQuery各種方法但似乎無法得到它的底部,並且這讓我瘋狂。

我假定爲簡單的東西:

$(document).ready(function() { 
    $('#swpm-5').val(formData.display("email")); 
}); 

但是失敗了。

然後我試圖

$(document).ready(function() { 
    var emailaddr = formData.display("email"); 
    $("#swpm-5").val(emailaddr); 
}); 

但仍沒有運氣。

有人可以給我一些幫助嗎?我覺得我一定錯過了一些至關重要的東西。

回答

0

嘗試這樣的:

function getQueryStringAsObject(uri) { 
    var uri = uri || location.href; 
    var qsAsObject = {}; 
    uri.replace(
     /([^?=&]+)(?:=([^&]*))?/g, 
     function($0, $1, $2) { qsAsObject[$1] = decodeURIComponent($2); } 
    ); 
    return qsAsObject; 
} 

// You can replace next line by 
// $(document).ready(function() { 
jQuery(function($) { 
    var qsAsObject = getQueryStringAsObject(); 
    $('#swpm-5').val(qsAsObject.email); 
}); 

,忘了;-)

+0

現在 「的Javascript塊由Aweber [規定]」,這是一種進步 - 謝謝! 現在只有問題是填寫'%40'而不是'@' 任何想法? – alexcowles

+0

是的,對不起,我使用'decodeURI'而不是'decodeURIComponent'。現在它應該與我編輯的答案修復 – laruiss

+0

哦,我 - 你不知道我是多麼感激。我最終對解決方案感到非常興奮,這是錯誤的嗎?謝謝! – alexcowles