在实际提交之前,如何使用标准提交事件和jquery删除/增强/更改表单提交数据?

时间:2013-10-01 11:30:16

标签: javascript jquery html forms submit

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

<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中看到打印事件对象中的任何网址

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

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

更新

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

UPDATE2:

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

1 个答案:

答案 0 :(得分:0)

这将禁用所有已取消关联的复选框的文本字段...

$(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);
    }
});

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