删除隐藏的div,执行干净的提交

时间:2013-08-23 15:00:33

标签: javascript jquery

我正在尝试执行“干净”提交,即从表单字段中删除所有隐藏的div后调用的提交。

由于这是我将更频繁使用的功能,因此我将代码转移到了扩展部分:

$.fn.extend({   
  bindCleanSubmit: function() {
    $(this).submit( function(event) {
      event.preventDefault();
      $(this).find("div:hidden").remove();
      console.log("trying to commit...");

      return true;
    });
  }
}); 

现在,删除了所有div,触发了控制台事件,但最后提交尚未执行。

你现在问题在这吗?

1 个答案:

答案 0 :(得分:2)

我不确定您要对preventDefault()做什么,但如果您从bindCleanSubmit()删除它,隐藏的div将从表单中删除,并且会正常提交。所以给出以下html:

<form id="myform" method="POST" action="/">
    <input type="text" name="displayedInput" value="1"/>
    <div style="display: none">
        <input type="text" name="hiddenInput" value="1"/>
    </div>
    <button type="submit">Submit</button>
</form>

...和更新的插件:

$.fn.extend({   
  bindCleanSubmit: function() {
    $(this).submit( function(event) {
      $(this).find("div:hidden").remove();
      console.log("trying to commit...");
      return true;
    });
  }
}); 

$('#myform').bindCleanSubmit();

...提交displayedInput时,只有myform值会提交给服务器。