我有一个函数,我想绑定一些输入标签。您可以在下面的代码段中看到两个示例。第二个例子到目前为止工作,但我想更频繁地使用该功能,所以我试图让它独立。你可以在第一个例子中看到我的尝试结果。它做了很多工作。我不明白我如何将函数和标签绑定在一起。可以帮忙吗?
var tags = [ 'Test', 'noch ein Test', 'Testwort'];
/* Example one: This doesn't work*/
function narrow() {
//var $x = e.data.x;
var isValid = false;
for (i in x) {
if (x[i].toLowerCase().match(this.value.toLowerCase())) {
isValid = true;
}
}
if (!isValid) {
this.value = previousValue
} else {
previousValue = this.value;
}
}
$( "#_id" ).autocomplete({
minLength: 0,
source: tags
});
$('#_id').bind('keyup', {x: tags}, narrow);
/* Example two: This works*/
$( "#_id_2" ).autocomplete({
minLength: 0,
source: tags
}).keyup(function() {
var isValid = false;
for (i in tags) {
if (tags[i].toLowerCase().match(this.value.toLowerCase())) {
isValid = true;
}
}
if (!isValid) {
this.value = previousValue
} else {
previousValue = this.value;
}
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script>
<input id="_id" name="xxx"> <input id="_id_2" name="xxxy">
&#13;
答案 0 :(得分:0)
将您的for循环更改为:
function narrow() {
...
for (i in tags) {
if (tags[i].toLowerCase().match(this.value.toLowerCase())) {
isValid = true;
}
...
并将keyup-binding更改为:
$('#_id').bind('keyup', narrow);
答案 1 :(得分:0)
您可以尝试使用以下脚本:
$('#_id').bind('input keydown mousedown', function() {...});
希望它能解决你的问题。
由于