如何将函数和标签绑定在一起

时间:2016-10-04 11:41:13

标签: javascript jquery

我有一个函数,我想绑定一些输入标签。您可以在下面的代码段中看到两个示例。第二个例子到目前为止工作,但我想更频繁地使用该功能,所以我试图让它独立。你可以在第一个例子中看到我的尝试结果。它做了很多工作。我不明白我如何将函数和标签绑定在一起。可以帮忙吗?



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;
&#13;
&#13;

2 个答案:

答案 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() {...});

希望它能解决你的问题。

由于