我有一个使用 jQuery 的插件,它修改输入以在输入模糊时为其提供格式掩码,但是我不想在提交表单时通过格式化值发送。
有没有办法可以拦截父表单提交事件,调整元素的值以删除掩码,然后继续提交,而不必为每个使用插件输入的表单定义它?
当然,另一种选择是使用隐藏输入并将原始值存储在其中,并使用未命名的输入来显示掩码,但如果可以的话,我想避免额外的标记(另外这将是一个方便的技巧!)
$("#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
});
您可以使用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>
您可以轻松地调整它来操作您的数据。