我有一个表单页面,我需要在提交之前做一些AJAX的事情,并且我使用序列化来解析它,但是表单输入名称中包含句点字符(我无能为力,它是一个破坏ajax的CRM怪癖 - 在这种情况下如何逃脱它们?基本形式是:
<form action="http://content.stuff.com" id="myid" class="form" method="POST" name="PPCform" >
<input name="uPEw.zMtH4.ptrq8qzoLXcwu7t87tfw2u" type="hidden" />
<input name="yP7h.zGDK46p8rq8qzJYDnru9D87Zfw2y" placeholder="Email" type="text" value="">
<input type="submit" id="button-blue" value="SUBMIT AND CONTINUE" />
</form>
脚本是:
$("form").submit(function (event) {
event.preventDefault();
//FB pixel, other stuff
$.post($(this).attr('action'), $(this).serialize())
.done(function () {
// redirect, etc.
});
});
但由于这个原因,这不起作用。在名字中。由于我没有单独抓住它们,我不能使用通常的// escape方法。知道如何指示序列化来逃避这些时期吗?
答案 0 :(得分:-1)
您可以使用正则表达式替换来简单地删除输入名称中包含的句点,如:
var serial = $(this).serialize().replace(/\.(?!com|net|org|us)/g,'')
$.post($(this).attr('action'), serial).done(function () {
//Your code goes here.
});
这是修复问题的一种简单方法,但可能需要在正则表达式方面进行更多细化。