我尝试在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() 或正则表达式,如注释(//)所示,它们根本不起作用。如何正确验证该价格字符串。非常感谢您的帮助
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")
}
此代码可以帮助您解决问题
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(非数字),但它不会将任何内容记录到控制台