呼男孩。我猜这很奇怪!
从表单获取输入,我想确保在将其发送到 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有什么建议吗?
最佳答案
我会在序列化之前交换它并更改输入,如下所示:
$('form').submit(function() {
$(this).find(':text, textarea').val(function(i, v) {
return v.replace(/[^\u3040-\u30FF^\uFF00-\uFFEF^\u4E00-\u9FAF^\u3400-\u4DBF]/g,'');
});
var text = ($(this).serialize());
//submit form....
});
这使用 .val()
在序列化之前根据正则表达式获取并替换旧值(更重要的是, encodeURIComponent()
在那里被调用)。
另一种选择是在 .serialize()
中间自己执行正则表达式步骤如下:
$('form').submit(function() {
var arr = $(this).serialzeArray();
$.each(arr, function() {
this.value = this.value.replace(/[^\u3040-\u30FF^\uFF00-\uFFEF^\u4E00-\u9FAF^\u3400-\u4DBF]/g,'');
});
var postData = $.param(arr);
});
.serialize()
实际上只是 $.param($(this).serializeArray())
所以我们要做的就是在这里将其拆分,获取 的
对象对在每个上创建并运行正则表达式。之后,我们将更改后的无西方字符数组传递给 value
.serializeArray()
数组中的 {name:'name',value:'value'}$.param()
序列化为字符串。
关于jquery - 使用 Jquery.serialize() 处理日语;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3530503/