ตัวเลือกกล่องเลือกรางให้จากไฟล์กาแฟอย่างไร

ในไฟล์ js.coffee หลังจาก ajax สำเร็จ ฉันต้องใส่ค่าลงในกล่องเลือกพร้อมชื่อเฉพาะที่เลือกไว้

_form.html,เอ้อ :

<%= f.select(:user_id, Item.find(session[:login_users_item_id]).try(:users).order_by_fullname.collect {|u| [ u.full_name, u.id ] }, selected: current_user.id)%>

items.js.coffee:

$.ajax '/users.json',   
type: 'GET', data: {"from_prod_bu" : selecteditemId},
success: (data) ->
  userSelectBox = $('#prod_user_id')
  userSelectBox.html('')
  if data.length == 0
    userSelectBox.append($('<option>').text('').attr('value', ''))
  else
    $.each data, (index,el) ->
      userSelectBox.append($('<option>').text(el.firstname+' '+el.lastname).attr('value', el.id))

ตอนนี้ชื่อเต็มของผู้ใช้แสดงอยู่ในช่องเลือก แต่ฉันจะให้ตัวเลือกที่เลือกสำหรับการแสดงชื่อผู้ใช้เฉพาะได้อย่างไร

ขอบคุณ


person jissy    schedule 02.03.2016    source แหล่งที่มา
comment
เพื่อให้ชัดเจน - คุณต้องเลือกตัวเลือกใดไว้ล่วงหน้าโดยเฉพาะ หากทราบตัวเลือกนั้นอยู่แล้วในโค้ด JS ของคุณ โปรดดูคำตอบด้านล่าง หากคาดว่า ID ของผู้ใช้ที่เลือกจะถูกส่งผ่าน AJAX คุณสามารถแก้ไขโค้ดด้านล่างนี้ได้อย่างง่ายดาย ขึ้นอยู่กับวิธีการส่ง   -  person Aleph Aleph    schedule 02.03.2016


คำตอบ (1)


ตัวเลือกที่เลือกได้รับการตั้งค่า โดยใช้แอตทริบิวต์ selected

สมมติว่า id ของผู้ใช้ที่จะเลือกถูกจัดเก็บไว้ในตัวแปร selectedUserId ภายใน JavaScript ของคุณ - ดังนั้นโค้ดต่อไปนี้ควรใช้งานได้:

success: (data) ->
  userSelectBox = $('#prod_user_id')
  userSelectBox.html('')
  if data.length == 0
    userSelectBox.append($('<option>').text('').attr('value', ''))
  else
    $.each data, (index, el) ->
      option = $('<option>')
        .text(el.firstname + ' ' + el.lastname)
        .attr('value', el.id)
      if el.id == selectedUserId
         option.attr 'selected', 'selected'
      userSelectBox.append option

ดูที่นี่ สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการตั้งค่าแอตทริบิวต์ selected ด้วย jQuery

person Aleph Aleph    schedule 02.03.2016