フィールドの最大値が200バイトのみである入力システムを作成しています。私は以下を使用して残りのバイト数を数えています(この方法も議論の余地があるかもしれません!):
var totalBytes = 200;
var $newVal = $(this).val();
var m = encodeURIComponent($newVal).match(/%[89ABab]/g);
var bytesLeft = totalBytes - ($newVal.length + (m ? m.length : 0));
これはうまく機能しているように見えますが、誰かが大量のデータを貼り付ける場合は、入力をスライスして200バイトのみを表示できるようにしたいと思います。私は疑似コードで次のように見えると思います:
$newText = substrBytes($string, 0, 200);
任意のヘルプやガイダンスをいただければ幸いです。
編集:ここで起こっていることはすべてUTF-8です:)
編集2:私はすべてのキャラクターをループして評価できることを知っています。これを処理するためにもう少し優雅な何かがあるかもしれないと思っていたと思います。
ありがとう!