javascript - Rails:表单路径取决于通过 javascript 的选择/选项
问题描述
我试图使我的表单路径依赖于用户选择的选项。即使console.log(...)
显示它在提交后已更改,我仍然被重定向到相同的路径。
.erb:
<%= form_tag(products_path, method: :get) do |f| %>
<%= text_field_tag :q, "", id: 'main_search', class: 'form-control form-control-lg', :placeholder => "I want to find..."%>
<select id="main_select">
<%= options_for_select([['Find Buyers', "offers"], ['Find Suppliers', "products"]], 1) %>
</select>
<%= submit_tag("Search", :class => "btn btn-lg btn-primary btn-block") %>
<% end %>
.js:
$('#main_select').on('change',function(){
if ($(this).val() == 'products'){
$("#main_search").attr('action','/products');
console.log($("#main_search"));
}
else{
$("#main_search").attr('action','/offers');
console.log($("#main_search")); // here I can see changed form
}
});
我应该被重定向到offers_path
我的控制器上。我该如何解决?
解决方案
我仍然被重定向到相同的路径
您更改了text_field_tag,而是需要更改表单操作属性。
添加到您的事件处理程序:
$(this).closest('form').attr('action', '......');
$('#main_select').on('change', function () {
if ($(this).val() == 'products') {
$(this).closest('form').attr('action', '/products');
console.log($("#main_search"));
}
else {
$(this).closest('form').attr('action', '/offers');
console.log($("#main_search")); // here I can see changed form
}
console.log($('form').get(0).outerHTML)
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
<textarea id="main_search"></textarea>
<select id="main_select">
<option value="products">products</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</form>
推荐阅读
- azure - 计算机视觉 REST API 格式
- android - 如何做购物车限制?
- microservices - 与 SOAP 服务的微服务通信
- html - 在单页中重定向
- java - 将数据库表中的所有数据集插入 jTable Java
- apache-spark - scala> val sqlContext = new HiveContext(sc) java.lang.NoClassDefFoundError: org/apache/hadoop/hive/conf/HiveVariableSource
- saml-2.0 - 如何使用 saml 在 keycloak 中添加动态用户属性值
- virtualbox - VirtualBox(ArchLinux 来宾)- 鼠标问题
- python - python调度脚本代码片段
- jquery - 当第二个输入框的时间小于第一个输入框的时间时,使用jQuery在keyup上发出一条消息