次のように、シリアル化する前に、それを交換して入力を変更します。
$('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()もう1つの方法は、次のように、手順の途中で自分で正規表現を実行することです。
$('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の{name:'name',value:'value'}オブジェクトペアを取得するだけです。.serializeArray()その後$.param()、文字列としてシリアル化するために、変更された配列(西部文字なし)を渡します。