我有两个问题:
问题1:我有一个微调器功能,我有一个小问题。例如,如果用户在微调器中键入00000009或00021,如果用户点击旋转器,它仍将在微调器中显示00000009或00021。我想要的是,如果这样的事情发生,那么我想要的是,当用户点击时,我希望微调器显示为9或21而不是00000009或00021.我不知道如何做到这一点虽然。有谁知道如何克服这个问题:
问题2:如果我使用退格键从一个微调器中删除一个数字,并留下一个空白微调器,那么需要做什么,这样如果我点击微调器,旋转器中的最后一个数字会重新出现在微调器中?
我的主要微调功能:
function Spinner(elem,min, max){
this.elem = elem;
this.elem.value = min;
this.min = min;
this.max = max;
this.timer;
this.speed = 150; //milliseconds between scroll values
var selfO = this;
this.elem.onkeyup = function(){
var regex = /^[0-9]*$/;
if(!regex.test(selfO.elem.value)){
selfO.elem.value = selfO.elem.value.substring(0,selfO.elem.value.length-1);
return;
}
selfO.validateValue();
}
this.validateValue = function(){
if(Number(selfO.elem.value) > selfO.max) {selfO.elem.value = selfO.max;}
if(Number(selfO.elem.value) < selfO.min) {selfO.elem.value = selfO.min;}
}
this.stopSpinning = function(){
clearTimeout(selfO.timer);
}
this.spinValue = function(dir){
selfO.elem.value = Number(selfO.elem.value) + dir;
selfO.validateValue();
selfO.timer = setTimeout(function(){selfO.spinValue(dir);},selfO.speed);
}
};
window.onload=function(){
//create the Spinner objects
var SpinnerHours = new Spinner(document.getElementById('txtHours'),0,23);
}
答案 0 :(得分:3)
要将00000009之类的数字作为9返回,请使用parseInt();
alert( parseInt(000000009, 10) ); // returns 9
正如Jonathan Lonowski指出的那样。第二个参数是基数。
radix参数用于指定要使用的数字系统,例如,16(十六进制)的基数表示字符串中的数字应从十六进制数解析为十进制数。
如果省略radix参数,则JavaScript假定以下内容:
答案 1 :(得分:0)
//question 2 answer
var input='';
document.getElementById('inputName').onkeydown=function(e){
e = e || window.event;
keycode = e.keyCode || e.which;
if(keycode !== 8 || keycode !== 46){//backspace and delete keycodes
input=this.value;
}
}
//question 1 answer
document.getElementById('inputName').onblur=function(){
var a=this.value;
if(isNaN(a)){
this.value=input-0;
}
else{
this.value=a-0;
}
}
这是做什么的,当用户输入一个数字时,它会保存值,除非按下删除或退格。然后当输入失去焦点时,它会检查并且如果没有有效数字,则将其更改为保存的值。此外,onblur摆脱了任何额外的零。此外,您还需要向检查输入的部件添加更多内容。例如,将任何非数字输入更改为''
。换句话说,它不是白痴证明。