2016-04-12 15 views
0

私は以下のスクリプトを持っています。ユーザーが投稿をクリックすると、ユーザーを同じページにリダイレクトし、URLからパラメータ値を入力ボックスに入力します。残念ながら、リダイレクトが完了しても、それらは入力されません。また、FilterMultiValueパラメータから*を取り除いて、テキストボックスに元の値が入力されるようにする必要がありますか?javascriptを使用してurlパラメータからtexbox値を入力しますか?

アラート機能を使用してパラメータ値を確認しても問題ありませんか?

<script type="text/javascript"> 

function getUrlParams() { 

     var paramMap = {}; 
     if (location.search.length == 0) { 
      return paramMap; 
     } 
     var parts = location.search.substring(1).split("&"); 

     for (var i = 0; i < parts.length; i ++) { 
      var component = parts[i].split("="); 
      paramMap [decodeURIComponent(component[0])] = decodeURIComponent(component[1]); 
     } 
     return paramMap; 
} 

function RedirectUrl() { 

    var tb = document.getElementById("tbSearch").value; 
    var cs = document.getElementById("sfield").value; 
    var url = ""; 

    if (tb != "") { 
       url = "FilterName=" + cs + "&FilterMultiValue=*" + tb + "*"; 
       window.location.href = "mypage.aspx?" + url; 
       var params = getUrlParams(); 
       alert(params.FilterName); 
       document.getElementById("sfield").value = params.FilterName; 
       document.getElementById('tbSearch').value = params.FilterMultiValue; 


    } 
    else { 
      return false; 
    } 
} 

function ClearUrl() { 
    window.location.href = "mypage.aspx"; 
     document.getElementById("sfield").value = ""; 
     document.getElementById('tbSearch').value = ""; 

} 

</script> 



Search Field: 
    <select id="sfield"> 
    <option selected value="Title" >Title</option> 
    <option value="Body">Body</option> 
    </select> 

Search Text: 
    <input type="text" id="tbSearch" /> 
    <input type="button" id="btnSearch" value="Search" onclick="return RedirectUrl();" /> 
    <input type="button" id="btnClear" value="Clear" onclick="return ClearUrl();" /> 

答えて

0
window.location.href = "mypage.aspx?" + url; 

実行beeingていないことの後にすべてのコードになりますこれ、ページを再読み込みします。 pageloadのコードを追加し、パラメータが指定されているかどうかを確認してから、テキストボックスに値を設定します。 何かのように:

window.addEventListener('load', function(){ 
    var params = getUrlParams(); 
    if(typeof params.FilterName !== 'undefined'){ 
     // removes the first and the last char from the string 
     var t = params.FilterMultiValue.substr(1, params.FilterMultiValue.length-2); 
     document.getElementById("sfield").value = params.FilterName; 
     document.getElementById('tbSearch').value = t; 
    } 
}); 
+0

addEventListenerはIE10で動作していないようですか? – adam78

+0

他のオンロードイベントがない場合は、代わりにwindow.onload = function(){...}を使用できます。しかし、複数のソースからのJavascriptコードを持つページでは安全ですので、私はaddEventListenerを好んでいます。 (複数のwindow.onload = function()は互いに上書きします)。 – Danmoreng

+0

問題に関するクイックGoogle検索:http://stackoverflow.com/questions/6927637/addeventlistener-in-internet-explorer – Danmoreng

関連する問題