jquery - 使用 Jquery.serialize() 处理日语;

标签 jquery unicode encoding serialization encodeuricomponent

呼男孩。我猜这很奇怪!

从表单获取输入,我想确保在将其发送到 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/

相关文章:

javascript - php 脚本中的 header() 不起作用

javascript - 为什么 JQuery 单击功能在 dataTable 的后续页面中不起作用?

javascript - 通过 POST 的数组(Ajax)

javascript - 当放置在可滚动的 div 中时,jquery ui sortable 不会在 IE 中滚动

html - 如何在 HTML 中正确显示德语字符?

Javascript - 发送编码二进制 (zip) 文件数据并在 C# 中对其进行解码

ruby - 为什么格式转换库缺乏将输出写入文件的单一方法?

c - C中的(一些)UTF8字符串函数是什么

perl - 在 Windows 上以 unicode 名称打开文件夹中的文件

cocoa - NSFileManager contentOfDirectoryAtPath 与 samba 路径的编码问题