Javascript 如何获取输入类型number的输入值?
我的表格中有一个数字字段,可以在这里输入分数:Javascript 如何获取输入类型number的输入值?,javascript,php,forms,Javascript,Php,Forms,我的表格中有一个数字字段,可以在这里输入分数: <input type="number" min="0" max="100" class="form-control" name="total_score" id='total_score' value="<?php echo $total_score;?>" >(Please enter a score from 0-100) 但似乎不起作用。有什么想法吗?谢谢。value永远不会为null,因为它总是一个字符串。你可以
<input type="number" min="0" max="100" class="form-control" name="total_score" id='total_score' value="<?php echo $total_score;?>" >(Please enter a score from 0-100)
但似乎不起作用。有什么想法吗?谢谢。
value
永远不会为null
,因为它总是一个字符串。你可以用
var score = document.getElementsById("total_score").value.trim();
if (!score) {
alert("no score");
}
…因为任何非空字符串(包括“0”
)都是真实的
一旦确定存在值,您可以自己将其转换为数字(有多个选项),或者使用输入的valueAsNumber
属性
注意:是在ES2015中添加的,因此它不会出现在像IE8这样的过时浏览器中,除非您对其进行多填充
旁注:我假设你问题中的
getElementsById
是一个输入错误,而你真正的代码有getElementById
(nos
)。值
永远不会是null
,因为它总是一个字符串。你可以用
var score = document.getElementsById("total_score").value.trim();
if (!score) {
alert("no score");
}
…因为任何非空字符串(包括“0”
)都是真实的
一旦确定存在值,您可以自己将其转换为数字(有多个选项),或者使用输入的valueAsNumber
属性
注意:是在ES2015中添加的,因此它不会出现在像IE8这样的过时浏览器中,除非您对其进行多填充
旁注:我假设您问题中的
getElementsById
是一个打字错误,而您的真实代码具有getElementById
(nos
)。这是否有效:
if(isNaN(parseInt(score))){
alert("no score");
}
这是否有效:
if(isNaN(parseInt(score))){
alert("no score");
}
这应该起作用:
//首先获取元素
let element=document.getElementById('myInput');
//获取元素的value属性
console.log(element.value);
//我们可以通过以下方式进行检查:
函数更改(){
如果(element.value>100){
log('值太大');
}
如果(元素值<5){
log(“值太小”);
}
}
这应该可以:
//首先获取元素
let element=document.getElementById('myInput');
//获取元素的value属性
console.log(element.value);
//我们可以通过以下方式进行检查:
函数更改(){
如果(element.value>100){
log('值太大');
}
如果(元素值<5){
log(“值太小”);
}
}
让我们详细描述这个问题。我们总是需要了解问题的本质,这样我们才能解决所有类似的问题
<div class="score-field">
<label for="total_score">(Please enter a score from 0-100)</label>
<input
type="number"
id="total_score"
name="total_score"
min="0"
max="100"
value="<?php echo $total_score;?>">
</div>
因此,String
类型的值永远不会为null
let value = '';
console.log(value == null) //false
讨论够了吧
让我们来解决这个问题
const score = parseFloat(document.getElementById('total_score').value);
它将值字符串
转换为数字
假设
parseFloat("100"); // 100
parseFloat(''); //NaN
我们可以检查值是否真的是一个数字
isNaN(value); // return true or false
我想,这是你要解决的问题
完全解决:
HTML:
让我们详细描述一下这个问题。我们总是需要了解问题的本质,这样我们才能解决所有类似的问题
<div class="score-field">
<label for="total_score">(Please enter a score from 0-100)</label>
<input
type="number"
id="total_score"
name="total_score"
min="0"
max="100"
value="<?php echo $total_score;?>">
</div>
因此,String
类型的值永远不会为null
let value = '';
console.log(value == null) //false
讨论够了吧
让我们来解决这个问题
const score = parseFloat(document.getElementById('total_score').value);
它将值字符串
转换为数字
假设
parseFloat("100"); // 100
parseFloat(''); //NaN
我们可以检查值是否真的是一个数字
isNaN(value); // return true or false
我想,这是你要解决的问题
完全解决:
HTML:
“我不想使用required,因为我不想在用户需要更多时间来决定输入分数时阻止他们。”这似乎很奇怪,这正是required
的目的。它只会阻止表单提交,而不会在字段周围进行标记。我假设getElementsById
是一个打字错误,而您的真实代码有getElementById
(nos
)。@T.J.Crowder是的,听起来很奇怪。但是,因为我还有一个临时保存表单的按钮,它允许用户将一些字段留空。这就是为什么我不想使用此表单的required。@T.J.Crowder将getElementById与getElementsByName一起误用真的很糟糕。谢谢你指出这一点!;)“我不想使用required,因为我不想在用户需要更多时间来决定输入分数时阻止他们。”这似乎很奇怪,这正是required
的目的。它只会阻止表单提交,而不会在字段周围进行标记。我假设getElementsById
是一个打字错误,而您的真实代码有getElementById
(nos
)。@T.J.Crowder是的,听起来很奇怪。但是,因为我还有一个临时保存表单的按钮,它允许用户将一些字段留空。这就是为什么我不想使用此表单的required。@T.J.Crowder将getElementById与getElementsByName一起误用真的很糟糕。谢谢你指出这一点!;)当我在屏幕上打印可变分数时,系统似乎甚至没有捕捉到该元素:(@Lykas-在web控制台中查看,您是否遇到了某种错误?(您是否看到了getElementById
中有关错误的注释?)谢谢!这确实是打字错误,我错误地使用了getElementsByName;(@Lykas-很高兴有帮助。-)null
这件事也是一个问题(因为“==null
是false
)@Lykas-一般情况下不是这样,但如果你知道分数
是一个字符串,那么就是这样。所有非空字符串都是真的(当用作布尔值时,它们转换为真的
);空字符串是假的(当用作布尔值时,它转换为假的
)。仅供参考,假值是“、0
、NaN
、null
、未定义
,当然还有false
。所有其他值(包括“0”
)都是真实的。当我在屏幕上打印可变分数时,系统似乎甚至没有捕捉到该元素(@Lykas-在web控制台中查看,您是否遇到了某种错误?(您是否看到了getElementById
中关于错误的注释?)谢谢!这确实是打字错误,我误用了getElementsByName;(@Lykas-很高兴这有帮助