拦截表格通过表格的孩子提交?

时间:2012-11-09 11:32:50

标签: jquery forms

我有一个使用jQuery的插件,它修改了一个输入,当它模糊时给它一个格式化掩码,但是我不希望在提交表单时通过格式化的值发送。

有没有办法可以拦截父窗体提交事件,调整元素的值来删除掩码,然后继续提交,而不必为每个使用插件输入的表单定义它?

另一个选择当然是使用隐藏输入并将原始值存储在其中,并使用未命名的输入来显示掩码,但如果可以,我想避免额外的标记(加上它会很方便欺骗!)

2 个答案:

答案 0 :(得分:1)

$("#formid").submit(function(e){


    e.preventDefault(); //prevent the form from submitting

    var formatted_string = $("#formatted_input"); // get the formatted string you want to unformat

    var unformatted_string = formatted_string.replace(/regularexpression or string to be replaced/,'replacement string');  // use .replace() function to find and replace either a string or regular expression to undo your previous formatting

    $("#formatted_input").val(unformatted_string);       // set the input value as the new unformatted value

    $(this).submit(); //submit this form

});

答案 1 :(得分:0)

您可以使用表单的onsubmit事件 此事件拦截表单提交事件,让您操纵数据,甚至决定是否提交表单(通过返回代码)。

一个常见的用例是验证:

<script type="text/javascript">
function ValidateInput() {
  //validate something here
  return true; //true will submit the form, false will stop the submission here
}
</script>

<form action="yourfile.html" onsubmit="return ValidateInput();">
    ...
</form>

您可以轻松调整此操作来处理数据。