0

我在 Rails3 中有一个简单的表单,它调用 AJAX 并用结果替换表

coffee.js 是

    id_handler = ->
       $.ajax
          url: "/surveys_search"
          data:
            id: $(this).val()
            name: $(this).prop("name")

    input_handler = ->
       $.ajax
          url: "/surveys_search"
          data:
            search: $(this).val()
            name: $(this).prop("name") 

    $(document).ready ->
      $(document).on "change", "select", id_handler
      $(document).on "keyup", "input", input_handler


      $("#survey_active").bind "change", ->
        $.ajax
          url: "/surveys_search"
          data:
            survey_active: (if $(this).is(":checked") then 1 else 0)

我的表格是

  <div class="well  well-small">
    <h4>Quick search</h4>
    <dl class="dl-horizontal">
      <dt><strong>Quiz:</strong></dt> <dd>
        <%= text_field_tag :surveys_search, params[:surveys_search], :class=>"text-field" %> 
        <%= select_tag 'survey_select', options_from_collection_for_select(Survey.all, 'id', 'name'),:prompt=>"All"%>
        <strong>Published?</strong> <%= check_box_tag 'survey_active' %>

        </dd>
      <dt><strong>Prize:</strong></dt>   <dd><%= text_field_tag :prizes_search, params[:prizes_search], :class=>"text-field" %> <%= select_tag 'prize_select', options_from_collection_for_select(Prize.all, 'id', 'name'),:prompt=>"All"%></dd>
      <dt><strong>Location:</strong></dt>   <dd><%= text_field_tag :locations_search, params[:prizes_search], :class=>"text-field" %> <%= select_tag 'location_select', options_from_collection_for_select(Location.all, 'id', 'name'),:prompt=>"All"%></dd>
    </dl>
  </div>

我的问题是,当我更改下拉列表的值时,选择框变得不可更改,直到我重新单击另一个元素然后尝试重新更改它。

当我更改它时,它实际上锁定了选择下拉列表

在上面的表格中,我更改了 TOP / FIRST 选择下拉列表,然后在 AJAX 调用之后 TOP 选择被锁定并且 BOTTOM / THIRD 选择框也处于焦点状态,我同时获得了两个焦点元素

有人可以解释如何绕过它吗?

4

1 回答 1

0
id_handler = ->
   $.ajax
      url: "/surveys_search"
      data:
        id: $(this).val()
        name: $(this).prop("name") 
      success: $(this).blur()
于 2013-03-11T14:07:07.983 回答