2015-02-05 72 views
-1

我正在使用具有使用下拉列表選擇類別的設備租用腳本的網站。 http://www.thierryfun.be/indexV2.php使用jquery獲取選中並執行的下拉列表

客戶希望所有類別另外顯示爲按鈕。 所以我試圖點擊一個按鈕,就好像用戶從下拉菜單中選擇了一個選項。

我試圖連接了下拉一些元素:

$('.thirdButton').click(function() { 
    $("select[name='category_id']").eq(3).prop('selected', true); 
    $("select[name='category_id']").prop('selectedIndex', 3); 
    $("select[name='category_id']").val(3).change(); 
    $("option[value=3]").click(); 
    $("option[value=3]").triggerHandler("select"); 
    $("option[value=3]").trigger("click"); 
}); 

然而,所有這些語句不compleetly做的工作。 它們都無法充當向服務器發送新請求的實際點擊。 正如你可以在這30秒截屏 https://www.youtube.com/watch?v=mZz8xgc0ALY

下拉犯規實際上是「承諾」,「執行」見使服務器請求。

任何想法,建議非常感謝!

回答

1

這裏有一些指針:

  • 你不需要給每個按鈕一個唯一的類。使用它們在按鈕組內的相對位置來確定要選擇的相應option
  • $("select[name='category_id']").eq(3).prop('selected', true);並不意味着太多;所選屬性屬於option元素。
  • 一旦您更改了所選的option,您可以通過.change()方法觸發change事件。
  • 可以使用$(...option').eq(2).prop('selected', true')$('select...').prop('selectedIndex', 2)但不能同時使用。

這裏是一個演示:

$(function() { 
 
    $('#mybuttons button').on('click', function() { 
 
    var index = $(this).index('#mybuttons button') + 1; 
 
    $('#myselect option').eq(index).prop('selected', true).parent().change(); 
 
    }); 
 
    $('#myselect').on('change', function() { 
 
    $('h3 strong').text('YES - ' + this.value); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<select id="myselect"> 
 
    <option value="">select one</option> 
 
    <option>One</option> 
 
    <option>Two</option> 
 
    <option>Three</option> 
 
</select> 
 
<div id="mybuttons"> 
 
    <button>One</button> 
 
    <button>Two</button> 
 
    <button>Three</button> 
 
</div> 
 
<h3>Did Selects Change Event Trigger? <strong></strong></h3>

+0

感謝。這是我正在尋找的。你的代碼有效。接受答案。然而,我把它連接到腳本,然後它沒有。我花了一段時間試圖弄清楚現在,所以我決定停止這種方法,並改變租賃腳本本身。 –

+0

很抱歉,您的網站上沒有這方面的信息。如果你想明白爲什麼你會知道未來該做什麼,你可以設置一個演示,以便我們看看。或者您可以提出一個新問題,我們很樂意看一看。 – PeterKA

1

.click()事件的問題是您必須在.document爲.ready()之後聲明它,如果控件是在頁面加載後動態創建的,則它不起作用。我建議,應該改變的第一行:

$('.thirdButton').click(function() { 
    .... 
    ... 
    ... 
}); 

$(document).on('click','.thirdButton',function(){ 
    .... 
    ... 
    ... 
}); 

.on()作品,而不需要內部.ready()聲明和最好的事情,它會爲那些寫在HTML或兩者控制工作在頁面生效時動態創建的。試試這個:

$(document).on('click','.thirdButton',function(){ 
    $("select[name='category_id']").eq(3).prop('selected', true); 
    $("select[name='category_id']").prop('selectedIndex', 3); 
    $("select[name='category_id']").val(3).change(); 
    $("option[value=3]").click(); 
    $("option[value=3]").triggerHandler("select"); 
    $("option[value=3]").trigger("click"); 

}); 
+0

我試過,但沒有結果恐怕 –

相關問題