在jquery自动完成字段中选择的倍数的计数
count number of multiple selected in jquery autocomplete field
在jquery的自动完成多值中,我尝试为所选值添加一个计数器。当我选择/再添加一个值时,它也应该立即更新。
解决方法的两个代码都不起作用。
1
function checkReceiver()
{
var str = document.forms[0].tags.value,
regex = /417/igm,
count = str.match(regex),
count = (count) ? count.length : 0;
console.log(count);
document.forms[0].receiver.value=count;
}
2
var str = document.forms[0].tags.value;
count = (str.match(/417/g) || []).length;
document.forms[0].receiver.value=count;
有没有触发器,我可以直接在自动完成函数中使用?
jsfiddle 上的演示
您已经非常接近工作解决方案。我建议进行以下更改:
不测试regex,只需在逗号上拆分:您使用的插件会在每个新选择的值后自动添加一个逗号。因此,您可以简单地通过逗号的数量来计算值的数量。例如:
function checkReceiver() {
var str = document.forms[0].tags.value;
var words = str.split(','); // split on commas
var count = words.length - 1; // a correction for the first element
document.forms[0].receiver.value = count;
}
或者,如果您认为用户可能会删除最后一个逗号,您也可以拆分空格:var words = str.split(' ');
。在空间上进行拆分假定两个值之间至少有一个空间。
确保在任何更改时调用函数:要确保在任何可能的更改时调用checkReceiver()
函数,您需要确保它捕获所有事件。捕获<input>
元素中事件的一种方法是强制检查任何可能的更改。举个例子(这个答案中的注释方法):
<input type="text" name="numbers" id="tags" class="input_text clearable" size="50"
onchange="checkReceiver();"
onkeypress="this.onchange();"
onpaste="this.onchange();"
oninput="this.onchange();"
placeholder="Choose Receiver" tabindex="1" value="" autofocus>
此外,您还希望在自动完成列表关闭时调用checkReceiver()
。因此:
.autocomplete({
close: function(event, ui) {
checkReceiver(); // call checkReceiver() upon close
}, ...
有了这些更改,程序就能按预期运行。请参阅这个jsFiddle。
我还可以建议您看看jQuery Tokeninput,它是专门为多个输入自动完成文本条目设计的,工作方式非常直观。例如,使用Tokeninput,您可以使用onAdd和onDelete回调(请参阅此处)。使用这些回调,您可以简单地增加(onAdd)和减少(onDelete)计数器变量。
相关文章:
- 选择字段-更改popover颜色
- 构建HTML选择字段并使用JavaScript数组选择选项
- 无法使用 Javascript 禁用选择字段
- 在应用 jQuery.Selected 时,使用 jQuery.Validate 来验证选择字段时,暴露错误
- 取消选中特定复选框时,React切换不删除的选择字段
- 添加值以动态选择字段
- jquery自动更新两个选择字段
- 如何在Sencha Touch应用程序的选择字段内自定义列表
- 自动完成PHP表单选择字段中的用户姓氏
- 添加选项以使用 javascript 从 json 文件中选择字段
- Angular ng通过ng选项重复多个选择字段,而不显示已选择的数据
- 如何创建具有空白选项和未筛选状态的动态选择字段
- 选择字段无需按钮即可工作,但在选择字段中不会更改
- 合并到选择字段
- 动态选择字段,在另一个选择字段 - Laravel 5.2 和 JS 中更改后重新填充
- 检查 2 个输入字段和一个选择字段,以便在它们全部填写后进行更改
- ReactJS - 如何在单击按钮时添加更多文本、文本字段、选择字段
- 检查表行的所有输入/选择字段是否都有值
- 当从第一个选项中选择一个选项时,如何取消隐藏另一个选择字段
- 具有相同名称和不同 id 的选择字段数组