2017-09-15 44 views
1

谷歌定製搜索觸發我使用谷歌定製搜索:用於級聯的文本

1 - 我寫的文字「A」到谷歌搜索框,

2 - 當我點擊搜索按鈕或點擊輸入,javascript function_1/function_2會將文本「B」(來自html文本框的文本,請參閱附加的代碼示例)連接到文本「A」,然後將針對拼接文本觸發搜索(「A」與「 B「)。

但是,它看起來像谷歌搜索處理器觸發搜索首先只有文本「A」,然後串接完成..這不是我想要的。我想要爲拼接文本完成搜索。

請參閱附加的代碼示例,並請讓我知道任何解決方案。

<div class="gcse-container" id="gcse_container"> 
    <gcse:search enableAutoComplete="true"></gcse:search> 
</div> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 


<script>  
(function($, window) { 
    var elementName = ''; 
    var initGCSEInputField = function_1() { 
    $('.gcse-container form.gsc-search-box input.gsc-input') 
     .on("keyup", function(e) { 
     if(e.which == 13) { // 13 = enter 
     var searchTerm = $.trim(this.value); 
     if(searchTerm != '') { 
     var elements = document.getElementById("firstname").value; 
      this.value += elements; 
     } 
     } 
    }); 
    $('.gcse-container form.gsc-search-box input.gsc-search-button') 
     .on("click", function_2(e) { 
     var searchTerm = $.trim($('.gcse-container form.gsc-search-box input.gsc-input').val()); 
     if(searchTerm != '') { 
      var elements = document.getElementById("firstname").value; 
      searchTerm +=elements; 
      $('.gcse-container form.gsc-search-box input.gsc-input').val(searchTerm); 
     } 
    }); 
    }; 

    var GCSERender = function() { 
    google.search.cse.element.render({ 
     div: 'gcse_container', 
     tag: 'search' 
     }); 
     initGCSEInputField(); 
    }; 
    var GCSECallBack = function() { 
    if (document.readyState == 'complete') { 
     GCSERender(); 
    } 
    else { 
     google.setOnLoadCallback(function() { 
     GCSERender(); 
     }, true); 
    } 
    }; 

    window.__gcse = { 
    parsetags: 'explicit', 
    callback: GCSECallBack 
    }; 
})(jQuery, window); 

(function() { 
    var cx = '017643444788069204610:4gvhea_mvga'; 
    var gcse = document.createElement('script'); gcse.type = 'text/javascript'; gcse.async = true; 
    gcse.src = 'https://www.google.com/cse/cse.js?cx=' + cx; 
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(gcse, s); 
})(); 

</script> 

 

回答

0

手動更改搜索字符串是不是一個好主意,所以不做

$('.gcse-container form.gsc-search-box input.gsc-input').val(searchTerm); 

相反,你可以使用prefillQuery和執行由谷歌提供的API爲這個特定目的。嘗試運行以下代碼片段並搜索「test」,它會將「junit」追加到查詢字符串中。

<div class="gcse-container" id="gcse_container"> 
 
    <gcse:search enableAutoComplete="true"></gcse:search> 
 
</div> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 

 
<script>  
 

 
(function($, window) { 
 
\t var cseElement 
 
\t var first_name = ' junit' 
 
    const initGCSEInputField = function() { 
 
    $('.gcse-container form.gsc-search-box input.gsc-input') 
 
     .on("keyup", function(e) { 
 

 
    }); 
 
    $('.gcse-container form.gsc-search-box input.gsc-search-button') 
 
     .on("click", function(e) { 
 
     var searchTerm = $.trim($('.gcse-container form.gsc-search-box input.gsc-input').val());  
 
     //use google api to prefill your query string and programmatically execute query 
 
\t \t \t \t cseElement.prefillQuery(searchTerm + first_name) 
 
     cseElement.execute(searchTerm + first_name) 
 
    }); 
 
    }; 
 

 
    var GCSERender = function() { 
 
\t \t cseElement = google.search.cse.element.render({ 
 
     div: 'gcse_container', 
 
     tag: 'search' 
 
     }); 
 
     initGCSEInputField(); 
 
    }; 
 
    var GCSECallBack = function() { 
 
    if (document.readyState == 'complete') { 
 
     GCSERender(); 
 
    } 
 
    else { 
 
     google.setOnLoadCallback(function() { 
 
     GCSERender(); 
 
     }, true); 
 
    } 
 
    }; 
 

 
    window.__gcse = { 
 
    parsetags: 'explicit', 
 
    callback: GCSECallBack 
 
    }; 
 
})(jQuery, window); 
 

 
(function() { 
 
    var cx = '017643444788069204610:4gvhea_mvga'; 
 
    var gcse = document.createElement('script'); gcse.type = 'text/javascript'; gcse.async = true; 
 
    gcse.src = 'https://www.google.com/cse/cse.js?cx=' + cx; 
 
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(gcse, s); 
 
})(); 
 

 
</script>

+0

Sorry..But我只是複製和傳遞您的狙擊到我的括號(用於測試)和它不工作,我在谷歌控制檯的錯誤消息: 遺漏的類型錯誤:無法讀取任何想法未定義的 屬性'prefillQuery'?是否有執行中的代碼段中缺少某些內容,我看不到! 感謝您的幫助。謝謝 –

+0

恩..感謝bro..I終於找到了工作。感謝你的幫助 ;) –