我正在使用文本框仅收集数字,用逗号分隔。不允许使用其他字符,甚至空格。只有0-9和一个逗号。
以下功能符合我的目的,但我现在要防止输入重复的逗号。
正确 例如22,444,2,444
不正确的 例如22,444,2,444或22,444,2,444
以下是我用于将字段限制为数字的代码,并且只允许使用逗号:
$(document).ready(function(){
$("#customPrices").keypress(function (e) {
if (e.which != 8 && e.which != 0 && String.fromCharCode(e.which) != ',' && (e.which < 48 || e.which > 57))
{
//display error message
if($( "#errmsg" ).is(':hidden'))
{
$( "#errmsg" ).fadeIn();
}
return false;
}
});
});
我找到了可以在以下链接中工作的内容: Javascript Help - prevent duplicate characters in textbox
这个例子需要阻止连字符,即charCode 45.逗号是charCode 44 ....
但我不确定如何将其实现到我当前的代码中......
任何帮助都会非常受欢迎,谢谢!
答案 0 :(得分:1)
在您的位置,我不会尝试验证按键,而是在用户更改时验证文本框的内容。
这可以是例如使用正则表达式实现:
function validate() {
var input = document.getElementById('inputField').value;
if(input.match(/,{2,}/g)) {
// the user entered a duplicate comma
alert('No duplicate commas allowed!');
}
}
&#13;
<input oninput='validate()' id='inputField' />
&#13;
您还可以将正则表达式扩展为检查数字0到9以及逗号以外的字符的输入:
/(,{2,}|[^,0-9])/g
这也将报告,例如22,44,d,17
无效。
答案 1 :(得分:1)
add the below condition:
1) take the existing value
2) check the last char is (,) and current char also (,) and validate
var customPrices = $("#customPrices").val();
String.fromCharCode(e.which) == ',' && String.fromCharCode(e.which) ==
customPrices.charAt(customPrices.length-1)
or
String.fromCharCode(e.which) == ',' && customPrices.charAt(customPrices.length-1) == ','