2015-04-01 82 views
0

我有以下搜索建議腳本,其中作爲用戶動態鍵入結果更新。我希望的是,當用戶點擊的建議之一是衝着他們以下幾點:searchPage.php?user_query=what the user has typed in the input使用搜索建議

下面是腳本:

$(function() { 
    $(".search").keyup(function() { 
     var searchid = $(this).val(); 
     var dataString = 'search=' + searchid; 
     if (searchid != '') { 
      $.ajax({ 
       type: "POST", 
       url: "search.php", 
       data: dataString, 
       cache: false, 
       success: function (html) { 
        $("#result").html(html).show(); 
       } 
      }); 
     } 
     return false; 
    }); 

    jQuery("#result").live("click", function (e) { 
     var $clicked = $(e.target); 
     var $name = $clicked.find('.name').html(); 
     var decoded = $("<div/>").html($name).text(); 
     $('#searchid').val(decoded); 
    }); 
    jQuery(document).live("click", function (e) { 
     var $clicked = $(e.target); 
     if (!$clicked.hasClass("search")) { 

      window.open('searchPage.php?user_query=', '_self', false); 
     } 
    }); 
    $('#searchid').click(function() { 
     jQuery("#result").fadeIn(); 
    }); 
}); 

在當前狀態下,它只是在打開的窗口到searchPage.php,但沒有考慮到用戶輸入的網址。期望的結果是searchPage.php?user_query=what ever you want

更新:

<form method="get" action="searchPage.php" enctype="multipart/form-data" autocomplete="off"> 
    <input type="text" class="search" id="searchid" name="user_query" id="searchBar" placeholder="Search for courses"/> 
    <input type="submit" id="searchButton" name="search" value="search" class="btn btn-danger" autocomplete="off"/> 

    <div id="result"></div> 
</form> 
+0

可以包括'html'? – guest271314 2015-04-01 00:53:42

+0

當'click'ed時,哪個元素應該打開新的'window'? – guest271314 2015-04-01 01:06:39

+0

結果 – John 2015-04-01 01:08:38

回答

1

你可以搜索字符串這樣的值:

document.getElementById('searchid').value 

所以,附加到您的查詢看起來是這樣的這個:

window.open('searchPage.php?user_query=' + document.getElementById('searchid').value,'_self',false); 

根據搜索框中的內容,您可能需要解決一些問題,例如包含&符號的搜索字詞(例如, ?user_query =搜索&找到例如只會在服務器上搜索) - 你不想意外傳遞一個額外的參數,你打算成爲搜索字符串的一部分。爲了解決你可能會轉換這個角色:

var searchString = document.getElementById('searchid').value.replace(/&amp;/g,'&') 
window.open('searchPage.php?user_query=' + searchString,'_self',false); 
+0

。我按照它,但是當我點擊它給我以下網址searchPage.php?user_query =忽略搜索字符串在一起 – John 2015-04-01 01:27:27

+1

看着你的HTML我注意到,你有兩個ID在你的輸入字段 - 你應該只有一個(JS可能沒有找到輸入字段 - 你可以在這裏提供JS錯誤以獲得更多反饋)。上面的代碼假設它是'searchid',但是你可以改變它到任何你更新你的HTML(我猜猜無論是searchid還是searchBar):'' – pherris 2015-04-01 01:34:23

1

嘗試

// `searchid` variable available to `keyup`, `click` event handlers 
var searchid = ""; 
var input = $("#searchid"); 
var results = $("#results"); 

input.on("keyup", function(e) { 

    searchid = e.target.value; 
    results.text(searchid) 

}); 

results.on("click", function(e) { 
    var popup = window.open("searchPage.php?user_query=" 
          + searchid, "_self", false); 
}); 

的jsfiddle http://jsfiddle.net/hxehczpq/1/