2008年5月1日 星期四

jquery, select, change, inject

http://docs.jquery.com/Events/change#examples

Problem
想把select 到的item value 加到text field裡
<%= text_field_tag :email %>

<%= select :contact, :user, @me.contacts.inject([]){|a, user| a << [user.nickname, user.nickname] }, :id => 'select_user', :prompt => '通訊錄聯絡人' %>

Solution
http://jquery.com/api/
http://visualjquery.com/1.1.2.html

<script type="text/javascript">

$(document).ready(function(){
$('#contact_user').change(function(){
str = $('#contact_user option:selected').val();
contact_str = $('#email').val();
$('#email').val(contact_str+','+str);
});

</script>


$('#contact_user option:selected') 取到的是jQuery object 他是沒有value 的
要用val() 去取

$('#contact_user option:selected').get(0) 取到的才是該 element 才有 value attribute
所以也可以寫成$('#contact_user option:selected').get(0).value = "ooxx" 當然比較麻煩

append 是加在element 後, 不是value

沒有留言: