Procházet zdrojové kódy

fix: ios bytes in the input

chenlei před 1 rokem
rodič
revize
f19b37a430

binární
src/subModule/pages/museum/images/bg@2x-min.jpg


+ 18 - 2
src/subModule/pages/order/index.tsx

@@ -93,6 +93,23 @@ const OrderPage: FC = () => {
     });
   };
 
+  const limitLength = (val: string, maxLength: number) => {
+    let len = 0;
+    for (let i = 0; i < val.length; i++) {
+      if (/[\u4e00-\u9fa5]/.test(val[i])) {
+        len += 2;
+      } else {
+        len++;
+      }
+
+      if (len > maxLength) {
+        return val.substring(0, maxLength);
+      }
+    }
+
+    return val;
+  };
+
   return (
     <View className="feedback-page">
       <View className="feedback order">
@@ -104,11 +121,10 @@ const OrderPage: FC = () => {
               className="feedback__input"
               placeholder="请输入内容,5字以内"
               value={params.name}
-              maxLength={5}
               onChange={(val) =>
                 setParams({
                   ...params,
-                  name: val as string,
+                  name: limitLength(val as string, 5),
                 })
               }
             />