JavaScript不允许在突出显示和插入时将点作为第一个点

JavaScript不允许在突出显示和插入时将点作为第一个点,javascript,html,Javascript,Html,我试图验证仅用于数字和小数的输入字段。但是圆点不可能是第一个!除了有人选择/突出显示输入值并点击圆点,然后将圆点作为第一个添加外,所有操作都正常。尝试高亮显示0并单击点(.)它将允许您将其作为第一个插入。有什么想法吗 函数是numberkey(evt,obj){ var charCode=(evt.which)?evt.which:evt.keyCode var值=目标值; var dotcontains=value.indexOf(“.”!=-1; 如果((value.length==0)和

我试图验证仅用于数字和小数的输入字段。但是圆点不可能是第一个!除了有人选择/突出显示输入值并点击圆点,然后将圆点作为第一个添加外,所有操作都正常。尝试高亮显示0并单击点(.)它将允许您将其作为第一个插入。有什么想法吗

函数是numberkey(evt,obj){
var charCode=(evt.which)?evt.which:evt.keyCode
var值=目标值;
var dotcontains=value.indexOf(“.”!=-1;
如果((value.length==0)和(&&(event.keyCode==46))返回false;//检查长度==0,则不允许输入“.”
if(dotcontains)
if(charCode==46)返回false;
if(charCode==46)返回true;
如果(字符码>31&(字符码<48 | |字符码>57))
返回false;
返回true;
}

您的
值.length==0
检查不适用的原因是您以前的值(0)使长度为1。但您可以扩展此想法,并检查正在编辑的部分是否从位置0开始

if (evt.target.selectionStart === 0 && (evt.keyCode==46)) return false; 
这将捕获从第一个位置开始的正在编辑的高亮显示的部分,以及刚刚在那里的光标


事实上,将.5写成十进制绝对有效(0.5=.5)是的,但我想阻止用户只发送点。也许可以检测到前导0的缺失并为他们添加它?可能是更好的用户experience@chazsolo,嗯,也许吧,我该怎么做?
很乐意帮忙。注意,前面有一个打字错误,第二个“evt”写为“事件”。它仍然有效,但应该改变。