使用 Jquery.serialize() 处理日语;
呼男孩。我猜是一个奇怪的人!
从表单获取输入,我想确保在将其发送到 php 脚本以创建一些 xml 之前没有西文字符、标点符号或数字...
来自表单名称 = "a"
$('form').submit(function() {
text = ($(this).serialize());
text = text.substr(2,text.length)
text = text.replace(/[^\u3040-\u30FF^\uFF00-\uFFEF^\u4E00-\u9FAF^\u3400-\u4DBF]/g,'');
--->;文本使用 .ajax 进入 php 脚本
但是,日语在进入正则表达式之前会被转换为 ASCII!
例如。 あああ 变成 %E3%81%82%E3%81%82%E3%81%82
有什么建议吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我会在序列化之前交换它并更改输入,如下所示:
这使用
.val()< /code>
在序列化之前根据正则表达式获取并替换旧值(更重要的是,
encodeURIComponent()
在那里被调用)。另一种选择是在
.serialize()
< 中间自行执行正则表达式/a> 步骤,如下所示:.serialize()
确实是只是$.param($(this).serializeArray())
所以我们要做的就是在这里将其拆分,获取{name 的
数组中的对象对value
:'name',value:'value'}。 serializeArray()
在每个数组上创建并运行正则表达式。之后,我们将更改后的数组(无西方字符)传递给$.param( )
序列化为字符串。I would swap it around and change the inputs before serializing, like this:
This uses
.val()
to get and replace the old value based on the regex before the serialization (and more importantly,encodeURIComponent()
gets called in there).Another alternative is to do the regex yourself in the middle of the
.serialize()
steps, like this:.serialize()
is really just$.param($(this).serializeArray())
so all we're doing is splitting it up here, taking thevalue
of the{name:'name',value:'value'}
object pairs in the array that.serializeArray()
creates and running the regex on each. After that we're passing the changed array, western-character-less to$.param()
to get serialized as a string.