我有这个功能:
echo '<div class="progress-bar progress-bar-striped active" role="progressbar" aria-valuenow="' . $row['balance'] . '" aria-valuemin="0" aria-valuemax="' . $row['nestEgg'] . '" style="width:' . $percent1 . '" />';
目标是捕获输入用户并将范围验证为2到10
但是,告诉我function validar(e) {
var xx = 1;
tecla = (document.all) ? e.keyCode : e.which; // 2
if (tecla == 8) return true; // 3
patron = /[A-Za-z\s]/; // 4
te = String.fromCharCode(tecla); // 5
var valorNumerico = Number(te);
if (te > 1 && te < 11) {
alert('Calificación:' + valorNumerico)
} else {
alert('La Calificación debe estar entre 2 y 10 - ' + valorNumerico)
}
}
我尝试了NaN
向我显示valorNumerico = parseInt(te);
我尝试了NaN
向我显示valorNumerico = Integer.parseInt(te);
那么,我如何转换为整数?谢谢我在javascript中使用了一个函数到asp.net
答案 0 :(得分:0)
据我所知:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode
String.fromCharCode(
)会将一个数字(或一系列数字)转换为相应的unicode值序列;所以,传递给fromCharCode()
的任何参数都不应该实际返回一个可以解析为整数的字符串。换句话说,当给出一个数字时,fromCharCode()
将返回一个不是数值的东西。
我会像其他人一样建议您console.log(tecla)
和console.log(e)
看看您真正要处理的是什么价值。
如果你真的在听一个keyup或keydown事件,String.fromCharCode(e.keyCode)
应该可以解析parseInt()
。例如,如果e.keycode
返回值0x31
,您应该能够将其解析为包含fromCharCode()
的字符串,并将其解析为parseInt()
的整数。
但是,如果您不太确定自己要处理的数据,或者看起来有些奇怪,那么记录将始终是您最好的选择。
答案 1 :(得分:0)
parseInt()
并不总是假设基数10.这可能是其中的一部分。
但我真的怀疑tecla
和te
不拥有您认为他们所做的值。尝试在console.log()
电话的正上方添加parseInt()
语句,以便了解该功能的实际情况。你可能会感到惊讶。
你尤其应该阅读这个相关的问题:
这告诉你这一行:
tecla = (document.all) ? e.keyCode : e.which;
或许看起来应该更像这样:
tecla = (typeof e.which == "number") ? e.which : e.keyCode
但即便如此,对于某些旧浏览器和不可打印的字符,或者如果您使用keypress
以外的其他内容,即使keyup
或{ {1}}。
答案 2 :(得分:0)
问题似乎在于以下几点:
1) te = String.fromCharCode(tecla); // 5
2) var valorNumerico = Number(te);
看看你的代码line1似乎暗示tecla是一个数字,也应该是fromCharCode()函数需要一个数字并返回一个字符; 所以让我们说tecla是65,所以line1会返回'A',它将分配给te变量。
现在在第2行,你试图将字符转换为数字,因为(例如A)它不能转换为数字,你得到NaN。
希望它有所帮助!