我有一个使用jQuery的插件,它修改了一个输入,当它模糊时给它一个格式化掩码,但是我不希望在提交表单时通过格式化的值发送。
有没有办法可以拦截父窗体提交事件,调整元素的值来删除掩码,然后继续提交,而不必为每个使用插件输入的表单定义它?
另一个选择当然是使用隐藏输入并将原始值存储在其中,并使用未命名的输入来显示掩码,但如果可以,我想避免额外的标记(加上它会很方便欺骗!)
答案 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>
您可以轻松调整此操作来处理数据。