diff --git a/web/app.js b/web/app.js
index 5ebf5ebfc..e9ba568b6 100644
--- a/web/app.js
+++ b/web/app.js
@@ -1905,7 +1905,11 @@ function webViewerZoomOut() {
 }
 function webViewerPageNumberChanged(evt) {
   let pdfViewer = PDFViewerApplication.pdfViewer;
-  pdfViewer.currentPageLabel = evt.value;
+  // Note that for `<input type="number">` HTML elements, an empty string will
+  // be returned for non-number inputs; hence we simply do nothing in that case.
+  if (evt.value !== '') {
+    pdfViewer.currentPageLabel = evt.value;
+  }
 
   // Ensure that the page number input displays the correct value, even if the
   // value entered by the user was invalid (e.g. a floating point number).
diff --git a/web/base_viewer.js b/web/base_viewer.js
index 352fe1c81..f37353a19 100644
--- a/web/base_viewer.js
+++ b/web/base_viewer.js
@@ -212,10 +212,14 @@ class BaseViewer {
       return;
     }
     // The intent can be to just reset a scroll position and/or scale.
-    this._setCurrentPageNumber(val, /* resetCurrentPageView = */ true);
+    if (!this._setCurrentPageNumber(val, /* resetCurrentPageView = */ true)) {
+      console.error(
+        `${this._name}.currentPageNumber: "${val}" is not a valid page.`);
+    }
   }
 
   /**
+   * @return {boolean} Whether the pageNumber is valid (within bounds).
    * @private
    */
   _setCurrentPageNumber(val, resetCurrentPageView = false) {
@@ -223,13 +227,11 @@ class BaseViewer {
       if (resetCurrentPageView) {
         this._resetCurrentPageView();
       }
-      return;
+      return true;
     }
 
     if (!(0 < val && val <= this.pagesCount)) {
-      console.error(
-        `${this._name}._setCurrentPageNumber: "${val}" is out of bounds.`);
-      return;
+      return false;
     }
     this._currentPageNumber = val;
 
@@ -242,6 +244,7 @@ class BaseViewer {
     if (resetCurrentPageView) {
       this._resetCurrentPageView();
     }
+    return true;
   }
 
   /**
@@ -256,14 +259,21 @@ class BaseViewer {
    * @param {string} val - The page label.
    */
   set currentPageLabel(val) {
-    let pageNumber = val | 0; // Fallback page number.
+    if (!this.pdfDocument) {
+      return;
+    }
+    let page = val | 0; // Fallback page number.
     if (this._pageLabels) {
       let i = this._pageLabels.indexOf(val);
       if (i >= 0) {
-        pageNumber = i + 1;
+        page = i + 1;
       }
     }
-    this.currentPageNumber = pageNumber;
+    // The intent can be to just reset a scroll position and/or scale.
+    if (!this._setCurrentPageNumber(page, /* resetCurrentPageView = */ true)) {
+      console.error(
+        `${this._name}.currentPageLabel: "${val}" is not a valid page.`);
+    }
   }
 
   /**
@@ -279,7 +289,7 @@ class BaseViewer {
    */
   set currentScale(val) {
     if (isNaN(val)) {
-      throw new Error('Invalid numeric scale');
+      throw new Error('Invalid numeric scale.');
     }
     if (!this.pdfDocument) {
       return;
@@ -668,8 +678,8 @@ class BaseViewer {
     const pageView = (Number.isInteger(pageNumber) &&
                       this._pages[pageNumber - 1]);
     if (!pageView) {
-      console.error(
-        `${this._name}.scrollPageIntoView: Invalid "pageNumber" parameter.`);
+      console.error(`${this._name}.scrollPageIntoView: ` +
+        `"${pageNumber}" is not a valid pageNumber parameter.`);
       return;
     }