我在这里有这个脚本http://jsfiddle.net/slashingweapon/7JmGn/
$(function () {
var wordCounts = {};
$("input[type='text']:not(:disabled)").keyup(function () {
var matches = this.value.trim().split(/\s+/);
wordCounts[this.id] = matches ? matches.length : 0;
var finalCount = 0;
var x = 0;
$('input:checkbox:checked').each(function () {
x += parseInt(this.value);
});
x = (x == 0) ? 1 : x;
$.each(wordCounts, function (k, v) {
finalCount += v * x;
});
$('#finalcount').val(finalCount)
}).keyup();
$('input:checkbox').change(function () {
$('input[type="text"]:not(:disabled)').trigger('keyup');
});
应该对单词进行计数,并根据是否选中了一个或多个复选框来更改右侧的值。
我有2个问题,首先是我如何让它最初显示0而不是1。
我的第二个问题是,我希望它忽略特定长度(2-3)下的标点符号和单词,例如“as,in,no”。
编辑:第一个问题已经解决了,感谢“Karna”,但他的长度解决方案对我来说似乎不起作用:http://jsfiddle.net/y4Bp5/1/
相反,它只忽略空格前的第一个输入,如果它在特定长度下
编辑2:“Rummap Datta”的解决方案有效,已解决。
答案 0 :(得分:4)
更改
x = (x == 0) ? 1 : x;
到
x = (x == 0) ? 0 : x;
这会将0设为默认值
您可以添加this.value.length
检查以忽略特定长度的字
$("input[type='text']:not(:disabled)").keyup(function () {
if(this.value.length > 2){
var matches = this.value.trim().split(/\s+/);
// Rest of the code
}
});
修改强>
将默认值更新为0将使结果始终为0,将x
与输入词lenght进行多次比较
相反,你可以做到
$("input[type='text']:not(:disabled)").keyup(function () {
//.....
x = (x == 0) ? 1 : x;
//......
if(x==1){
$('#finalcount').val(0);
}else{
$('#finalcount').val(finalCount);
}
}).keyup();
答案 1 :(得分:2)
你能试试吗?
根据我对这个问题的理解,我改变了几行代码。请检查。
$('input:checkbox:checked').each(function () {
x += parseInt(this.value);
});
$.each(wordCounts, function (k, v) {
finalCount=(matches==0)? 0 : (finalCount + (v * x));
});
$('#finalcount').val(finalCount);
为第二个问题添加解决方案的更多更改。请检查它是否有帮助。
tempCount=0;
for(i=0;i<matches.length;i++){
if(matches[i].length>2){
tempCount++;
}
}
finalCount=tempCount*x;
$('#finalcount').val(finalCount);
<强> FIDDLE 2 强>