如何使用 jQuery 检查输入字符串是否为有效数字 - 后端 WordPress

问题描述 投票:0回答:2

我尝试在Wordpress后端(添加、编辑帖子页面)检查字段中的输入是否为有效数字,如果不是,则会显示警告消息。这是我试图实现的目标:

    jQuery(document).ready(function($){
      addRequiredField($);
    });
    function addRequiredField($) {
      var elements = document.getElementsByTagName("INPUT");
        for (var i = 0; i < elements.length; i++) {
          elements[i].oninvalid = function(e) {
            e.target.setCustomValidity("");   
              if (!e.target.validity.valid) {
                e.target.setCustomValidity("Please enter a valid price");
              }

              //  if (isNaN(e.target.value)) {
           //  if ((!e.target.validity.valid) || isNaN(e.target.value)) {
           // if ((!e.target.validity.valid) || (/^(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(e.target.value))) {

        /*      else if (isNaN(e.target.value)) {
               e.target.setCustomValidity("It is an invalid number. Please enter valid numbers like 280, 364, etc.");
              }
              else {
               return true;
              }  */
          };
          elements[i].oninput = function(e) {
            e.target.setCustomValidity("");
          };
        }
      }

我已经更新了上面的代码。

输入零 (0) 时效果非常好。上面的代码根本不验证字段字符串(价格)。我已经尝试过 isNaN() 或正则表达式,如注释(//)所示,它们根本不起作用。如何正确验证该价格字符串。非常感谢您的帮助

string input numbers
2个回答
0
投票

const numberString = "0123456";
const isFloat = /\d+\.\d+/.test(
    numberString
);
const checkZeroValue = /^[1-9]\d*$/.test(numberString)

if(isFloat == true ){
  console.log("float");
} else if(checkZeroValue == false){
  console.log("zero");
}else {
  console.log("numbers are correct")
}

此代码可以帮助您解决问题


0
投票

jQuery(document).ready(function($){
  addRequiredField($);
});

function addRequiredField($) {
  var elements = document.getElementsByTagName("INPUT");
  for (var i = 0; i < elements.length; i++) {
    elements[i].oninvalid = function(e) {
      e.target.setCustomValidity("");
      if (!e.target.validity.valid) {
        e.target.setCustomValidity("Please enter a price");
      } else if (/\d+\.\d+/.test(e.target.value)) {
        e.target.setCustomValidity("It is an invalid number. Please enter valid numbers like 280, 364, etc.");
      } else {
        e.target.setCustomValidity("");
      }
    };
  }
}

您检查输入的值是否为有效数字的代码中似乎存在错误。 isNaN 函数检查一个值是否为 NaN(非数字),但它不会将任何内容记录到控制台

© www.soinside.com 2019 - 2024. All rights reserved.