2013-09-25 114 views
1

我試圖在單擊鏈接時更改下拉列表的值。我已經盡了我的盡職調查,並相信這可以用'道具'來完成......但我不確定我將如何使用道具與我的特定示例。現在我使用最多的代碼是...:jQuery - 點擊鏈接時更改下拉列表的值

var $select = $('#finder-3--16'); 
$('a[href="#yearselect"]').click(function() { 
    $select.val($(this).data('select')); 
}); 

上的鏈接的點擊,它設置的值,但不會改變它(因此綁定到的onchange事件不會被觸發)。鏈接的例子可以看到下面...:

<a href="#yearselect" data-select="125921">2009</a> 

我相信我必須以某種方式返回值,然後使用,但不知道如何去做。任何幫助將不勝感激!

電平變化的功能,可以在這裏看到:

onChange: function(event) 
{ 
    var select  = Event.element(event); 
    var parentId = select.value; 
    var dropdownId = 0; 

    /* should load next element's options only if current is not the last one */ 
    for (var i = 0; i < this.selects.length; i++){ 
     if (this.selects[i].id == select.id && i != this.selects.length-1){ 
      var selectToReload = this.selects[i + 1]; 
      if (selectToReload){ 
       dropdownId = selectToReload.id.substr(selectToReload.id.search('--') + 2); 
      } 
      break; 
     } 
    } 
} 

謝謝!

+0

這將是有益的,如果你設置你的代碼的的jsfiddle。 – Jasper

+0

您是否在錨點中使用preventDefault方法來阻止它嘗試到另一個頁面? –

+0

觸發change事件後:'$ select.trigger('change');' – Moob

回答

1

如果你問綁定到的select變化的事件,嘗試

$select.val($(this).data('select')).change(); 

.trigger('change')

會觸發更改事件,這將調用你的變化回調..

+0

這改變了選擇字段的值,但onchange事件沒有被觸發。 –

+1

這可行。 http://jsbin.com/UnUtIbI/1/edit – Vlad

1

試試這個:

​​
1

在更新數值後觸發更改事件

var $select = $('#finder-3--16'); 
$('a[href="#yearselect"]').click(function() { 
    $select.val($(this).data('select')); 
    $select.trigger('change'); 
}); 
1

注意:這已更新爲也觸發更改事件。

我創建了一個小提示向您展示一個工作示例。

http://jsfiddle.net/Ru3Md/10/

簡而言之,你需要的是這樣的:

$(function() { 
$('a').on('click',function(event) { 

    var txt = $(this).text(); 

    $('#mySelect option') 
.filter(function() { return $.trim($(this).text()) == txt; }) 
.attr('selected',true).change(); 

}) 

});

1

聽起來像您沒有在<option>標籤上定義的value屬性。這樣做:

<select id="finder-3--16"> 
    <option value="125921">whatever label you want</option> 
</select> 

現在你現有的jQuery應該可以工作。

看到這個小提琴:http://jsfiddle.net/X7SVe/

相關問題