【问题标题】:How to remove/enhance/change the form submit data using standard submit event and jquery, before the actual submit happens?在实际提交发生之前,如何使用标准提交事件和 jquery 删除/增强/更改表单提交数据?
【发布时间】:2013-10-01 11:30:16
【问题描述】:

是否可以从表单中提取数据,比如:

<form action="/search/search" data-remote="true" data-type="json" id="search_form" method="get">

  <div class="input-group">
    <span class="input-group-addon">
      <input name="search[req][text][e]" type="hidden" value="false">
      <input id="search_req_text_e" name="search[req][text][e]" type="checkbox" value="true">
    </span>
    <input id="search_req_text_v" name="search[req][text][v]" type="text" value="">
  </div>

  <button id="fire_search" type="submit">Search</button>

</form>

我想到了 jQuery 的 .submit() 方法。但是如何从事件中提取和更改 url?

$('#search_flickr_panel_body form').submit(function(e) {
    console.log(e)
}

我在 Chrome DevTools 中没有看到打印的事件对象中的任何 url

我想删除未选中的文本字段。

也许 .attr('disabled', 'true') 将是删除的变体,但是如何更改数据,而不在文本字段中更改,仅在提交 url 中?

更新:

我在表单中有超过 100 个这样的输入字段,所以即使只检查一个也只发送所有这些字段不是很好(太多无用的数据造成通信开销)

更新2:

我不仅希望能够从提交数据中删除未检查的数据,而且还希望能够在提交之前更改此数据(例如为值添加前缀,添加新参数),以便我可以影响结果url(带数据)。

【问题讨论】:

  • 澄清一下:如果未选中 search_req_text_e,您想从发布的数据中删除 search_req_text_v 吗?
  • 在服务器端不使用该值不是更好吗?
  • 它会,但如果表单真的很大(我有超过 100 个输入)- 如果只检查一个输入,那么有这样的通信开销并不是很好

标签: javascript jquery html forms submit


【解决方案1】:

这将禁用所有关联复选框未选中的文本字段...

$(function() {
    $('#search_form').submit(function(e) {
        e.preventDefault();

        $(".input-group").each(function() {
            $(this).find("input:text").prop("disabled", !$(this).find("input:checkbox")[0].checked);
        });

        this.submit();

        $(".input-group input:text").prop("disabled", false);
    }
});

残障人士不应与表格的其余部分一起提交。

【讨论】:

  • 这是一个删除数据的解决方案。但是如何在不改变形式的情况下改变它呢?或者我应该使用自定义 ajax 请求并处理它,还是有任何其他选项与标准提交事件?
  • 由于提交页面,表单将被重新加载,因此您的服务器应该处理元素的状态,而不是客户端。
  • 不,它不会被重新加载:我有一个data-remote=true 属性,所以它是一个AJAX请求
  • 试试上面的。它停止调用提交方法,对文本字段进行更改,使用本机方法提交表单,然后将所有文本框设置回启用状态。
  • 其中一些可以被禁用,这就是重点 - 不要发送无用(未经检查的)数据
猜你喜欢
  • 2021-06-26
  • 2023-03-06
  • 2012-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-02
相关资源
最近更新 更多