我有一个包含多个字段的HTML。其中一个字段仅允许数字输入。但是现在我希望当用户执行时将所有字符粘贴到该字段中,除了剥离或删除的数字。
例如用户粘贴:
$ 1 234 567 - >输入字段中的1234567
1.234.567 - > 1234567
1,234,567 - > 1234567
等等
答案 0 :(得分:12)
使用正则表达式。
<input id="inputBox" name="inputBox" />
<script type="text/javascript">
var inputBox = document.getElementById('inputBox');
inputBox.onchange = function(){
inputBox.value = inputBox.value.replace(/[^0-9]/g, '');
}
</script>
或者您可以使用计时器来不断检查该字段。
<input id="inputBox" name="inputBox" />
<input id="inputBox2" name="inputBox2" />
<script type="text/javascript">
var timer = new Array();
function checkFields(el){
var inputBox = document.getElementById(el);
inputBox.value = inputBox.value.replace(/[^0-9]/g, '');
clearTimeout(timer[el]);
timer[el] = setTimeout((function(){ checkFields(el); }), 50);
};
function timerFields(el){
timer[el] = setTimeout((function(){ checkFields(el); }), 50);
};
timerFields('inputBox');
timerFields('inputBox2');
</script>
答案 1 :(得分:3)
试试这个
var regexp=/\D/g;
alert(("$1 234 567").replace(regexp,""));
答案 2 :(得分:1)
var f = function (s) {
var r = '';
for (var i in s) {
if ('0' <= s[i] && s[i] <= '9') {
r += s[i];
}
}
return r;
}
alert(f('123.234-234?345')); // 23234234345
但是从另一个答案中使用regexp:)