方法一:使用正則表達式,代碼如下: function getByteLen(val) { var len = 0; for (var i = 0; i < val.length; i++) { var a = val.charAt(i); if (a.match(/[^\x00-\xff]/ig) != null) { len += 2; } else { len += 1; } } return len; } 方法二:使用字符unicode判斷:方法如下: function getByteLen(val) { var len = 0; for (var i = 0; i < val.length; i++) { var length = val.charCodeAt(i); if(length>=0&&length<=128) { len += 1; } else { len += 2; } } return len; } function queryTask(){ var taskNameQueryLength = getByteLen($("#taskNameQuery").val().trim()); if(taskNameQueryLength>4){ jAlert("任務名稱長度為0-160位,其中中文算兩個字符!", "系統提示"); return; } var scanTargetQueryLength = getByteLen($("#scanTargetQuery").val().trim()); if(scanTargetQueryLength>4){ jAlert("掃描目標長度為0-65535位!", "系統提示"); return; } gridQuery(); } function getByteLen(val) { var len = 0; for (var i = 0; i < val.length; i++) { var patt = new RegExp(/[^\x00-\xff]/ig); var a = val[i]; if (patt.test(a)) { len += 2; } else { len += 1; } } return len; }