Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chrome浏览器中奇怪的.replace()行为 萨达德 $(.allownumericwithdecimal”).live(“按键向上”,函数(事件){ $(this.val($(this.val().replace(/[^0-9\.]/g'); var text=$(this.val(); 如果(!((event.which>=48&&event.which 2)){ //event.preventDefault(); } } var text=$(this.val(); if((event.which>=48&&event.which 2){ //event.preventDefault(); } if(event.which==190){ //event.preventDefault(); } } if(text.indexOf('.')!=-1&&event.which==190){ if(text.match(“^[0-9]+(\[0-9]{0,2})?$”){else{ $(this.val(“”); } } 如果(text.indexOf('.')==-1&&text.length>7&&&(event.which!=190&&event.which!=8&&event.which!=46&&event.which!=110&&event.which!=0)){ event.preventDefault(); } });_Javascript_Jquery_Replace - Fatal编程技术网

Javascript Chrome浏览器中奇怪的.replace()行为 萨达德 $(.allownumericwithdecimal”).live(“按键向上”,函数(事件){ $(this.val($(this.val().replace(/[^0-9\.]/g'); var text=$(this.val(); 如果(!((event.which>=48&&event.which 2)){ //event.preventDefault(); } } var text=$(this.val(); if((event.which>=48&&event.which 2){ //event.preventDefault(); } if(event.which==190){ //event.preventDefault(); } } if(text.indexOf('.')!=-1&&event.which==190){ if(text.match(“^[0-9]+(\[0-9]{0,2})?$”){else{ $(this.val(“”); } } 如果(text.indexOf('.')==-1&&text.length>7&&&(event.which!=190&&event.which!=8&&event.which!=46&&event.which!=110&&event.which!=0)){ event.preventDefault(); } });

Javascript Chrome浏览器中奇怪的.replace()行为 萨达德 $(.allownumericwithdecimal”).live(“按键向上”,函数(事件){ $(this.val($(this.val().replace(/[^0-9\.]/g'); var text=$(this.val(); 如果(!((event.which>=48&&event.which 2)){ //event.preventDefault(); } } var text=$(this.val(); if((event.which>=48&&event.which 2){ //event.preventDefault(); } if(event.which==190){ //event.preventDefault(); } } if(text.indexOf('.')!=-1&&event.which==190){ if(text.match(“^[0-9]+(\[0-9]{0,2})?$”){else{ $(this.val(“”); } } 如果(text.indexOf('.')==-1&&text.length>7&&&(event.which!=190&&event.which!=8&&event.which!=46&&event.which!=110&&event.which!=0)){ event.preventDefault(); } });,javascript,jquery,replace,Javascript,Jquery,Replace,问题是,如果我在文本框中键入一个值,比如3434,现在我想通过将光标放在3后面并按5,使其成为35434,它在Firefox和IE中工作正常,但在chrome中,5在值后面加上,变成34345 罪魁祸首行是替换非数字字符的行 如何处理这个问题???kepress似乎是罪魁祸首,当我将小提琴改为只使用keyup时,替换操作正确(尽管光标移到了末尾) 试试这个code,它会运行 我只是做个测试 <div> <input type="text" class="allownum

问题是,如果我在文本框中键入一个值,比如3434,现在我想通过将光标放在3后面并按5,使其成为35434,它在Firefox和IE中工作正常,但在chrome中,5在值后面加上,变成34345

罪魁祸首行是替换非数字字符的行


如何处理这个问题???

kepress
似乎是罪魁祸首,当我将小提琴改为只使用
keyup
时,替换操作正确(尽管光标移到了末尾)


试试这个
code
,它会运行

我只是做个测试

<div>
    <input type="text" class="allownumericwithdecimal"/>saadad
</div>
解释


您只需确保用户输入所需的值。如果输入的值不是
整数
,则替换。您的正则表达式的意思是:“那些不是整数或点(.)的值,将它们替换为空值”。这就是您需要进行此测试的原因。因此,如果用户输入您想要的值,它不会执行操作替换,也不会通过测试。

只需删除“keypress”事件keypress事件与keydown事件非常相似。如果按下按钮keypress事件无法识别字符。在代码中,它作为当前输入为空,因此它将替换字符。

$(.allownumericwithdecimal”).live(“按键向上”,函数(事件){
var caretP=$(this.getCursorPosition();
$(this.val($(this.val().replace(/[^0-9\.]/g');
var text=$(this.val();
如果(!((event.which>=48&&event.which 2)){
//event.preventDefault();
}       
} 
var text=$(this.val();
if((event.which>=48&&event.which 2)
{
//event.preventDefault();
}
if(event.which==190)
{
//event.preventDefault();
}
}
if(text.indexOf('.')!=-1&&event.which==190)
{	
if(text.match(“^[0-9]+(\[0-9]{0,2})?$”){
}
否则{
$(this.val(“”);
}
}
如果(text.indexOf('.')==-1&&text.length>7&&&(event.which!=190&&event.which!=8&&event.which!=46&&event.which!=110&&event.which!=0)){
event.preventDefault();
}
$(this)。选择范围(caretP,caretP);
});
(函数($){
$.fn.selectRange=函数(开始、结束){
返回此值。每个(函数(){
如果(此.setSelectionRange){
这是focus();
此.setSelectionRange(开始、结束);
}else if(this.createTextRange){
var range=this.createTextRange();
范围。塌陷(真);
range.moveEnd('character',end);
range.moveStart('character',start);
range.select();
}
});
};
$.fn.getCursorPosition=函数(){
var输入=this.get(0);
if(!input)return;//找不到(input)元素
if(文档选择){
//即
input.focus();
}
在input?input.selectionStart:“”| | Math.abs(document.selection.createRange().moveStart('character',-input.value.length)))中返回'selectionStart';
}
})(jQuery);

萨达德

有趣,但测试用例不清楚,请添加正确的输入值和实际输出。每次按下键盘,它都会用新的值替换该值。因此,您需要的是,在替换
input
元素的值之前进行测试。@S͢kyD͢ream谢谢,我在过去一个小时内参加了会议,问题已经重新讨论过了解决了。我还需要为未来的搜索者添加正确的输入和期望的输出值吗???@RishiPrakash不,不,我了解,好吧,谢谢你。很好。我投票支持了你的答案。它不是我发布的,伙计!!我想,是你问的这个问题!谢谢投票!:)@RadonirinaMaminiaina我是发布此代码的人:)谢谢您的帮助。@RishiPrakash很高兴能帮助您。@RadonirinaMaminiaina您能为这一点添加理论解释吗,我的意思是您的代码是如何工作的?是的,很好地工作。但光标位置的额外代码。:(注意:我没有问这个问题。光标不能移到末尾。
if ( /[^0-9\.]/g.test($(this).val()) ) {
    $(this).val($(this).val().replace(/[^0-9\.]/g,'')); 
}