Javascript:确保输入是数字
Javascript: Ensure Input is Numbers Only
我有一个单位转换脚本;我的HTML包含单选按钮(用来选择单位),一个输入字段,一个输出字段和一个按钮。
这是我的Javascript文件的一个示例:
[...]
window.addEventListener("load", function(){
document.getElementById("convert").addEventListener("click", function(){
var initial = document.getElementById("initial").value;
document.getElementById("answerswer").innerHTML = convertObj.converted(initial);
});
[...]
});
function ConvertClass(){}
ConvertClass.prototype.converted = function(initialAmount){
if(document.getElementById("kilograms").checked) {
this.calculation = this.multiply(initialAmount, 2.2046);
} else if(document.getElementById("pounds").checked) {
this.calculation = this.divide(initialAmount, 2.2046);
}
return this.calculation.toFixed(2);
}
[...]
var convertObj = new ConvertClass();
我想添加一些东西,以确保a)空输入字段不被视为"0",b)数字以外的东西不显示"NaN"作为答案。在这两种情况下,我都希望输出不返回任何内容(空白)。我不希望它不做任何事情,以防用户在提交正确的数字后提交空白字段或无效值(我认为这会导致之前的答案仍然显示)
我怎么写呢?我假设我应该使用条件,但我不知道是哪些条件。我做了一些研究,显然使用isNaN()并不完全准确,至少在这种情况下不完全准确。
我把代码放在哪里,在由页面加载触发的函数中还是由按钮触发的函数中?
我还在学习,所以,如果可能的话,我真的很感激解释以及编辑的代码。谢谢你!
在函数开头的ConvertClass.prototype.converted
内,添加:
// this coerces it to a number instead of a string
// or NaN if it can't convert to a number
initialAmount = initialAmount.length > 0 ? +initialAmount : 0/0;
// if not a number, return empty string
if (isNaN(initialAmount)) {
return "";
}
如果输入为空字符串,0/0
的值为NaN
增加以下功能,检查整数中是否有值
function isInt(value) {
return !isNaN(value) &&
parseInt(Number(value)) == value &&
!isNaN(parseInt(value, 10));
}
像这样改变你的加载函数:
window.addEventListener("load", function(){
document.getElementById("convert").addEventListener("click", function(){
var initial = document.getElementById("initial").value;
if(isInt(initial)){
document.getElementById("answerswer").innerHTML = convertObj.converted(initial);
}else{
document.getElementById("answerswer").innerHTML = '';
}
});
这将确保当提供一个有效的整数时,只有它会被转换,否则答案仍然为空。
有关如何检查整数的更多信息,请查看:
如何检查如果一个变量是一个整数在JavaScript?
编辑:当数字不是整数时,将答案设置为空字符串
相关文章:
- 是否可以在数字输入框中的小按钮中添加事件侦听器
- 用于数字输入的正则表达式
- AngularJs:在数字输入字段中设置验证的条件最小值和最大值
- 敲除:如何对两个数字输入进行双向绑定
- 在数字输入上按回车键时提交
- 如何显示正好 2 位数字的 html 数字输入的输入值
- 如何使用鼠标或触摸更改数字输入字段
- 为数字输入添加特殊字符
- 在一些Android设备/Chrome上,HTML5数字输入中没有小数点
- 仅HTML输入除^之外的数字输入
- 如何处理 jQuery 中的数字输入更改
- 使用 js 禁用文本输入中的数字输入
- 角度JS数字输入和默认值
- 如何根据数字输入的总和限制数字输入
- 如何更改数字输入的格式
- 从给定的最大数字中减去并输出数字输入值
- 如何使此数字输入接受逗号
- 如何将加号和减号附加到数字输入和更新值
- 在我更改数字输入时获取要更改的范围的内容
- 多个数字输入,jquery .each 如果 val() 大于,则将类添加到元素