diff --git a/fxjs/cjs_field.cpp b/fxjs/cjs_field.cpp
index 37aa797..ba0aa1e 100644
--- a/fxjs/cjs_field.cpp
+++ b/fxjs/cjs_field.cpp
@@ -132,6 +132,36 @@
     pFormFillEnv->SetChangeMark();
 }
 
+// note: iControlNo = -1, means not a widget.
+void ParseFieldName(const WideString& strFieldNameParsed,
+                    WideString& strFieldName,
+                    int& iControlNo) {
+  auto reverse_it = strFieldNameParsed.rbegin();
+  while (reverse_it != strFieldNameParsed.rend()) {
+    if (*reverse_it == L'.')
+      break;
+    ++reverse_it;
+  }
+  if (reverse_it == strFieldNameParsed.rend()) {
+    strFieldName = strFieldNameParsed;
+    iControlNo = -1;
+    return;
+  }
+  WideString suffixal =
+      strFieldNameParsed.Right(reverse_it - strFieldNameParsed.rbegin());
+  iControlNo = FXSYS_wtoi(suffixal.c_str());
+  if (iControlNo == 0) {
+    suffixal.TrimRight(L' ');
+    if (suffixal != L"0") {
+      strFieldName = strFieldNameParsed;
+      iControlNo = -1;
+      return;
+    }
+  }
+  strFieldName =
+      strFieldNameParsed.Left(strFieldNameParsed.rend() - reverse_it - 1);
+}
+
 std::vector<CPDF_FormField*> GetFormFieldsForName(
     CPDFSDK_FormFillEnvironment* pFormFillEnv,
     const WideString& csFieldName) {
@@ -576,36 +606,6 @@
 
 CJS_Field::~CJS_Field() = default;
 
-// note: iControlNo = -1, means not a widget.
-void CJS_Field::ParseFieldName(const WideString& strFieldNameParsed,
-                               WideString& strFieldName,
-                               int& iControlNo) {
-  auto reverse_it = strFieldNameParsed.rbegin();
-  while (reverse_it != strFieldNameParsed.rend()) {
-    if (*reverse_it == L'.')
-      break;
-    ++reverse_it;
-  }
-  if (reverse_it == strFieldNameParsed.rend()) {
-    strFieldName = strFieldNameParsed;
-    iControlNo = -1;
-    return;
-  }
-  WideString suffixal =
-      strFieldNameParsed.Right(reverse_it - strFieldNameParsed.rbegin());
-  iControlNo = FXSYS_wtoi(suffixal.c_str());
-  if (iControlNo == 0) {
-    suffixal.TrimRight(L' ');
-    if (suffixal != L"0") {
-      strFieldName = strFieldNameParsed;
-      iControlNo = -1;
-      return;
-    }
-  }
-  strFieldName =
-      strFieldNameParsed.Left(strFieldNameParsed.rend() - reverse_it - 1);
-}
-
 bool CJS_Field::AttachField(CJS_Document* pDocument,
                             const WideString& csFieldName) {
   m_pJSDoc.Reset(pDocument);
diff --git a/fxjs/cjs_field.h b/fxjs/cjs_field.h
index fd40b1f..d772e66 100644
--- a/fxjs/cjs_field.h
+++ b/fxjs/cjs_field.h
@@ -350,9 +350,6 @@
                                const std::vector<v8::Local<v8::Value>>& params);
 
   void SetDelay(bool bDelay);
-  void ParseFieldName(const WideString& strFieldNameParsed,
-                      WideString& strFieldName,
-                      int& iControlNo);
   std::vector<CPDF_FormField*> GetFormFields() const;
   CPDF_FormField* GetFirstFormField() const;
   CPDF_FormControl* GetSmartFieldControl(CPDF_FormField* pFormField);
