我的代码将字词更改为数字, 但是当我粘贴文字时:三四一一四五六一 接收: 3411456one
如果我再次单击文本输入,则更改为1 但我希望它在第一次粘贴时能够顺利工作。
$('#word').on('change keyup paste',function(){
var a=document.getElementById('word').value;
var b=a
.replace('zero','0')
.replace('one','1')
.replace('two','2')
.replace('three','3')
.replace('four','4')
.replace('five','5')
.replace('six','6')
.replace('seven','7')
.replace('eight','8')
.replace('nine','9')
.replace('','')
document.getElementById('word').value=b;});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="word" type="text">
&#13;
答案 0 :(得分:1)
replace
避免最后一次出现。因此,您应该使用带有全局匹配的正则表达式(g
标志)。
$('#word').on('change keyup paste input',function(){
var a=document.getElementById('word').value;
var b=a
.replace(/zero/g,'0')
.replace(/one/g,'1')
.replace(/two/g,'2')
.replace(/three/g,'3')
.replace(/four/g,'4')
.replace(/five/g,'5')
.replace(/six/g,'6')
.replace(/seven/g,'7')
.replace(/eight/g,'8')
.replace(/nine/g,'9')
.replace('','');
document.getElementById('word').value=b;});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<div style="position:absolute;top:10px;left:12px;width:310px">
<br>
<br>
<input id="word" type="text">
<table id="get" style="line-height:0px" alt=""><tbody></tbody></table>
</div>
<div style="position:absolute;top:10px;right:200px;text-align:center">
<script src='https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js'></script>
<script src=''></script>
</div>
</body>
&#13;
答案 1 :(得分:1)
您应该替换全局事件。 replace
函数会替换第一次出现,并在您添加/g
时替换所有出现次数。
$('#word').on('change keyup paste',function(){
var a=document.getElementById('word').value;
var b=a
.replace(/zero/g,'0')
.replace(/one/g,'1')
.replace(/two/g,'2')
.replace(/three/g,'3')
.replace(/four/g,'4')
.replace(/five/g,'5')
.replace(/six/g,'6')
.replace(/seven/g,'7')
.replace(/eight/g,'8')
.replace(/nine/g,'9')
.replace('','')
document.getElementById('word').value=b;});