0

我的页面上有一个 select2,其中包含以下 onchange 事件:

$("#product_menu_category_id").on("change", function(e) {
  $.ajax( {
  url: '/product_prices',
  data: {id: e.val, product_id: <%= @product.id %> },
  success:  function(data){ data }
  })
})

并使用以下辅助函数在测试期间设置一个值:

def set_select2_value(index, id, value)
  "$('.select2-container').each(function(index) {if (index == " + index.to_s + ") $(this).select2('data', {id: '" + id.to_s + "', text: '"+ value + "'})});"
end

这适用于所有没有连接 onchange 触发器的 select2 控件。

如何在我的 RSpec (capybara) 测试期间设置值并触发任何 onchange 事件(如果存在的话)?

4

1 回答 1

0

终于找到了这样做的方法,您需要使用 {triggerChange:true}) 并在屏幕外选择上设置值,而不是 select2:

"$('select.select2-offscreen').each(function(index) {if (index == " + index.to_s + ") $(this).select2('val', '" + id.to_s + "', {triggerChange:true}); });"
于 2013-07-10T21:10:09.157 回答