[jQuery]模仿Google搜尋,在網址列以+加號串接參數

今天跟大家分享如何做到模仿google搜尋

以+加號 分隔搜尋字串

 

前端呈現

 

後端程式

 

完整程式碼

@{
    ViewBag.Title = "Hello World!";
}
<h2>@ViewBag.Title</h2>
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script>
    $(document).ready(function () {

        //按鍵被按下時
        $('#submit').click(function () {
            var keyword = $('#keyword').val().replace(/\s\s+/g, ' ').replace(/ /g, '+');
            window.location.href = 'Sample?keyword=' + keyword;
        });

        //在文字框中,按下 enter 鍵後,呼叫父代中的 button 的 click 事件
        $('#keyword').keypress(function (event) {
            var keycode = (event.keyCode ? event.keyCode : event.which);
            if (keycode == '13') {
                $(this).parent().find('button').click()
            }
        });
    })
</script>
<p>
    <br />
    <input type="text" class="form-control" id="keyword" value="@ViewBag.Keyword" placeholder="試試輸入 參數1 參數2" autofocus="autofocus">
    <br />
    <button type="submit" id="submit" class="btn btn-primary btn-sm btn-margin"><i class="fa fa-search fa-fw"></i>查詢</button>
</p>

 

也許你會疑惑我為什麼不透過url encode達成

var keyword = encodeURIComponent($('#keyword').val());

 

兩種作法對後端來講都是沒差的,Controller接到的都是一樣的結果

 

但是在前端呈現上

用url encode時的網址列

自行處理加號轉換時的網址列

 

以user角度出發時

可能很難理解 %20 = 空白 = 編碼後

但若參數間以加號串接,則相對好理解多了