Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在jquery自动完成字段中选择的多个计数_Javascript_Jquery_Html_String_Autocomplete - Fatal编程技术网

Javascript 在jquery自动完成字段中选择的多个计数

Javascript 在jquery自动完成字段中选择的多个计数,javascript,jquery,html,string,autocomplete,Javascript,Jquery,Html,String,Autocomplete,在jquery的“自动完成多值”中,我尝试为所选值添加一个计数器。当我选择/添加一个或多个值时,它也应该立即得到更新 解决方案的两个代码都不起作用 一, 二, 是否有一个触发器,我可以直接在自动完成功能中使用 您非常接近工作解决方案。我建议作出以下修改: 不用测试正则表达式,只需在逗号上拆分即可:您正在使用的插件会在每个新选择的值后自动放置一个逗号。因此,您可以简单地通过逗号的数量来计算值的数量。例如: function checkReceiver() { var str = docum

在jquery的“自动完成多值”中,我尝试为所选值添加一个计数器。当我选择/添加一个或多个值时,它也应该立即得到更新

解决方案的两个代码都不起作用

一,

二,

是否有一个触发器,我可以直接在自动完成功能中使用


您非常接近工作解决方案。我建议作出以下修改:

不用测试正则表达式,只需在逗号上拆分即可:您正在使用的插件会在每个新选择的值后自动放置一个逗号。因此,您可以简单地通过逗号的数量来计算值的数量。例如:

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()
函数,需要确保它捕获所有事件。在
元素中捕获事件的一种方法是强制检查任何可能的更改。例如(注释中的方法):

有了这些更改,程序就可以按预期工作。请参见


我还可以建议您看看它是专门为多输入自动完成文本输入而设计的,并以非常直观的方式工作。例如,对于Tokeninput,您可以使用onAddonDelete回调()。通过这些回调,您可以简单地增加(onAdd)和减少(onDelete)一个计数器变量。

非常感谢Jean Paul提供的出色解决方案!也为你的记录良好的答案-哇!!对于token,我还没有经验,但在未来的项目中我会尝试(我也喜欢在stackoverflow上使用它们,当添加标签来打开问题时)。在我实际的自动完成选择框上,挂起更多的函数-更改会花费太多时间。@doschni:很高兴听到你喜欢这个答案!我原以为改变一切会花费太多时间,但了解新插件总是件好事;特别是对于未来的项目:)
var str = document.forms[0].tags.value;
count = (str.match(/417/g) || []).length;
document.forms[0].receiver.value=count;
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;
}
    <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>
    .autocomplete({
       close: function(event, ui) {
          checkReceiver();                        // call checkReceiver() upon close
       }, ...