gpt4 book ai didi

javascript - Selectize createFilter 中 JavaScript hasOwnProperty 的问题

转载 作者:行者123 更新时间:2023-12-03 11:19:10 25 4
gpt4 key购买 nike

我正在尝试弄清楚一个名为 selectize.js 的简洁的基于 jQuery 的库的工作原理。 .

在演示页面上,他们有一个“createFilter”函数的示例,我想用它来检查用户输入是否已存在,如果不存在,则创建该项目。

来自 selectize.js 的示例(用于电子邮件):

createFilter: function(input) {
var match, regex;

// email@address.com
regex = new RegExp('^' + REGEX_EMAIL + '$', 'i');
match = input.match(regex);
if (match) return !this.options.hasOwnProperty(match[0]);

// name <email@address.com>
regex = new RegExp('^([^<]*)\<' + REGEX_EMAIL + '\>$', 'i');
match = input.match(regex);
if (match) return !this.options.hasOwnProperty(match[2]);

return false;
},

我自己制作一个过滤器以仅允许字母,并检查它是否已在列表中:

createFilter: function (input) {

var match, regex;
regex = new RegExp('^[a-zA-ZæøåÆØÅ][a-zA-ZæøåÆØÅ ]*[a-zA-ZæøåÆØÅ]$', 'i');
match = input.match(regex);

if (match) return !this.options.hasOwnProperty(match[0]);

return false;
},

出于某种原因,它总是返回true,从而允许用户添加新项目,即使它已经存在,经过几个小时的测试,我确信它与此有关。 options.hasOwnProperty - 但我在弄清楚什么和原因时陷入了死胡同,任何帮助或指导将不胜感激。

最佳答案

我一直在尝试让 createFilter 也正常工作,并查看了源代码,但事情似乎设置正确,但某个地方显然存在一个错误。目前我的解决方案是使用实际的创建方法。如果您仔细研究一下源代码(在创建选项的文档中提到),您会注意到在创建项目之前,它将检查您的创建值是否是一个函数:

var setup = (typeof self.settings.create === 'function') ? this.settings.create : function(input) {
var data = {};
data[self.settings.labelField] = input;
data[self.settings.valueField] = input;
return data;
};

通过传入一个创建函数,该函数仅在满足特定条件时返回数据值,否则返回 {},您可以有效地在 createFilter 函数中执行您想要执行的操作。

$('#foo').selectize({
create: function(input){
var self = this;
var data = {};
// IF SOME CONDITION MET
if (bar) {
data[self.settings.labelField] = input;
data[self.settings.valueField] = input;
}
return data;
},
});

如果数据以 {} 形式返回,则不会创建该项目,用户可以根据需要继续修改它(或被告知选择无效)。

关于javascript - Selectize createFilter 中 JavaScript hasOwnProperty 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27197343/

25 4 0
文章推荐: javascript - 在 mongodb 数据库中搜索特定字符串
文章推荐: javascript - JQuery Validation