2016-08-30 45 views
0

我使用wordpress的「Instant Search & Suggest」插件,當您在搜索字段中輸入關鍵字時會生成建議。如果您在後端啓用,當您點擊建議關鍵字時,它會有一個選項,它會直接將您帶到特定建議的特定單個頁面。我禁用了該功能,因爲我不需要直接將用戶轉到單個帖子頁面,而是需要他們訪問搜索結果頁面。如果禁用了該選項,則當您單擊建議時,所有插件都會執行此操作,當您單擊該建議時,會將建議的關鍵字(帖子標題)插入到搜索字段中。當我嘗試使用jquery「搜索」提交按鈕時,使用Javascript/jQuery觸發一個按鈕點擊。

情景如下:用戶開始輸入關鍵字>插件給出建議>用戶點擊建議>插件將點擊的關鍵字/建議插入搜索字段>腳本點擊提交。

除了最後一部分 - 「腳本點擊提交」 - 一切工作正常。

我嘗試了幾種不同的方法。

jQuery(".iss-result").on('click',function(){ 
     jQuery('#topsearchsubmit').trigger("click"); 
    }); 

也試過這樣:

$(".iss-result").click(function() { 
     $("#topsearchform").submit(); 
    }); 

的.iss型結果是在搜索領域下的下拉列表中選擇類的建議。 #topsearchform是表單ID,#topsearchsubmit是該表單的按鈕ID。

我曾經嘗試都jQuery的(文件)。就緒(函數($),沒有它,但在反正沒有任何JS錯誤沒有結果時,無論是檢查。

能否請你幫我這個?如何我可以爲用戶點擊的.iss,結果李項上的搜索按鈕,一旦點擊,?

謝謝

PS這裏作爲問搜索表單HTML

<form role="search" method="get" id="topsearchform" class="searchform group navbar-form" action="<?php echo home_url('/'); ?>"> 
<div class="input-group header-large-search-field login-popup"> 
    <label for="s"><span class="offscreen sr-only"><?php echo _x('Search for:', 'label') ?></span></label> 
    <input type="search" class="search-field form-control" placeholder="<?php echo esc_attr_x('Search', 'placeholder') ?>" 
    value="<?php echo get_search_query() ?>" name="s" /> 
     <div class="input-group-btn"> 
      <button id="topsearchsubmit" class="btn btn-default2 btn-top-search" type="submit"><i class="fa fa-fw fa-search"></i></button> 
     </div> 

    <?php /* input type="image" alt="Submit search query" src="<?php echo get_template_directory_uri(); ?>/images/search-icon.png"> */ ?> 
</div> 
</form> 
+0

分享HTML以及 – guradio

+0

@guradio添加了搜索表單的html。 – Domeniko

+0

你可以試試'$(document).on('click','。iss-result',function(){})'? – guradio

回答

0

我認爲這將有助於你

jQuery(".iss-result").on('click',function(e){ 
     e.preventDefault(); 
    var form=jQuery('#topsearchsubmit'); 
    $.ajax({ 
       type: 'POST', 
       url: form.attr('action'), 
       data: form.serialize(), 
       dataType:'json', 
       success: function (data) { 



    }, 
      }); 
}); 
+0

感謝您的回覆。不幸的是,這沒有奏效:(( – Domeniko

0

與class .iss-result創建並同時尋找破壞的元素,它們不存在,當你想一個事件綁定到他們。您應該使用事件委派並監聽父元素上的點擊事件,例如表單。過濾事件來源到.iss-result,你應該能夠聽取這些點擊。

其次,您應該不要立即觸發提交,因爲插件(也在聽這些相同的點擊)需要花時間將選定的值放入input元素中。所以你應該異步生成提交點擊(使用setTimeout)。

jQuery("#topsearchsubmit").on('click', '.iss-result', function() { 
    setTimeout(function() { 
     jQuery('#topsearchsubmit').click(); 
    }, 0); 
}); 
+0

感謝你的迴應。我是JS的初學者,但我看到你的意思,它確實有道理,但是我缺乏編寫代碼的能力。它沒有工作,我應該在代碼中修改它以使其工作嗎? – Domeniko

+0

沒有實際的應用程序,很難看到,但事件處理程序是否運行?您可以放一些'alert('我在這裏');'語句在'setTimeout'之前和之內,看它是否到達那裏?或者如果你對'console.log'很熟悉,那就用它來代替。 – trincot