我有一个文本框,我想计算'。'
的出现次数如果文本框已经有'。'那么用户不能输入'。'来自他的主板
这是我的代码:
$('.txt').keyup(function() {
var ele = $(this).val();
var contains = (ele.indexOf('.') > -1);
if (contains) {
var count = $(this).val().match(/./g);
if (count > 1) {
var cont = $(this).val();
var str = $(this).val().length;
$(this).val(cont.substring(0, str));
}
}
});
$(this).val()。match(/./ g)给出了'。'出现的索引。但我想计算它的出现次数。
答案 0 :(得分:7)
您可以使用以下代码查找字符“。”的时间。发生在一个字符串中。
var regex = new RegExp(/\./g)
var count = "This is some text .".match(regex).length;
答案 1 :(得分:3)
你的正则表达式需要改变。 “”在正则表达式意味着一切。你需要逃避“。”。大概就是这样......
$(this).val().match(/\./g);
答案 2 :(得分:1)
你可以试试这个:
$('.txt').keyup(function() {
var str = this.value;
var a = str.split('.');
if (a.length > 2) {
this.value = a.slice(0, 2).join('.');//removes 2nd dot and the string following it
//a[0] +='.'; this.value = a.join('');//only removes redundant dots (alternative)
}
});
此处的出现次数为a.length-1
。
答案 3 :(得分:0)
这正是你想要的...... :) Demo here
逃离角色并计算它。
使用Javascript:
$('.txt').keyup(function() {
var ele = $(this).val();
alert(ele.match(/\./g).length);
});
HTML
<textarea id="txt"></textarea>
答案 4 :(得分:0)
尝试在onkeypress下面的javascript functinon或tex盒的onkeyup事件
并像这样打电话onkeypress = "return (event,'txtid',9,2)"
beforelength
在'。'之前。允许的数量和afterLength
在“。”之后的数量。号码长度
function isNumberKey(event, obj, beforeLength, afterLength) {
var keyCode1 = event.keyCode;
var keyCode = 0;
if (keyCode1 == 0)
keyCode = event.which;
else {
keyCode = keyCode1;
}
// alert(keyCode);
// alert(keyCode1);
if ((keyCode >= 48 && keyCode <= 57) || keyCode == 46 || keyCode == 13 || keyCode == 27 || keyCode == 127) {
var text = document.getElementById(obj).value;
if (keyCode == 46 && keyCode1 == 0) {
if (text.toString().indexOf(".") != -1) {
return false;
}
}
if (keyCode == 46) {
if (text.toString().indexOf(".") != -1) {
return false;
}
}
// if (!/^\d{0,10}(?:\.\d{0,2})?$/.test(text)) {
// return false;
// } else {
// }
var splitText = text.split('.');
if (splitText[0].length >= beforeLength) {
if (keyCode == 46 && text.toString().indexOf(".") == -1) {
return true;
} else if (text.toString().indexOf(".") != -1) {
return true;
}
return false;
}
// if (splitText.length > 1 && splitText[1].length == afterLength) {
// return false;
// }
}
else {
return GetDefault(event);
}
return true;
}
function GetDefault(event) {
var keyCode = event.keyCode;
if (keyCode == 0)
keyCode = event.which;
if (keyCode == 8 || keyCode == 9 || keyCode == 35 || keyCode == 36 || keyCode == 37 || keyCode == 38 || keyCode == 39 || keyCode == 40 || keyCode == 46 || keyCode == 118) {
return true;
}
return false;
}
答案 5 :(得分:0)
如果您正在尝试提醒用户(或其他高级内容),这就是您需要计数的原因,那么您需要添加长度:
$('.txt').keyup(function() {
var ele = $(this).val();
var i = ele.indexOf('.');
if (i > -1) {
var c = ele.match(/\./g).length);
// ...
}
});
如果您只是想删除这些点,那么您可以使用:
$('.txt').keyup(function() {
$(this).val($(this).val().replace('.', ''));
});
答案 6 :(得分:0)
我找到了自己的方式......
var count = 0;
$('.txt').blur(function ()
{
var t = $(this).val();
if (t.indexOf('.') >= 0)
{
var j = t.split('.');
count = j.length - 1;
}
else
{
count = -1;
}
}