#javascript #jquery
#javascript #jquery
Вопрос:
У меня есть функция, которую я хочу привязать к некоторым тегам ввода. Вы можете увидеть два примера во фрагменте кода ниже. второй пример работает до сих пор, но я хочу использовать функцию чаще, поэтому я попытался сделать ее самостоятельной. Вы можете увидеть результат моей попытки в первом примере. это не работает. Я не понял, как я должен связать функцию и тег вместе. Может ли sombody помочь?
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">
Ответ №1:
Измените свой цикл for на narrow на:
function narrow() {
...
for (i in tags) {
if (tags[i].toLowerCase().match(this.value.toLowerCase())) {
isValid = true;
}
...
и измените привязку keyup на:
$('#_id').bind('keyup', narrow);
Комментарии:
1. но это не решает проблему. для каждого ввода у меня есть разные теги
Ответ №2:
вы можете попробовать использовать приведенный ниже скрипт:
$('#_id').bind('input keydown mousedown', function() {...});
Надеюсь, это решит вашу проблему.
Спасибо
Комментарии:
1. проблема заключалась в том, что я хотел иметь одну функцию, которую я мог бы использовать для ввода a с помощью tagss_a и ввода b с помощью tags_b и ввода c с помощью tags_c и т.д.
2. функция должна быть самостоятельной, как показано в первом примере. потому что я не хочу иметь один и тот же код на каждом входе. и каждый ввод использует автозаполнение с другими тегами внутри…
3. вы имеете в виду, что хотите создать общую функцию, в которой вы можете передавать теги iput в качестве параметра и применять к этим тегам ввода
input
. Правильно?4. ДА. Каждый ввод имеет функцию автозаполнения с собственными тегами, а функция, которую вы видите в моем примере один и два, приводит к тому, что вы можете выбирать только теги автозаполнения, но никаких других тегов. И эту функцию я хочу иметь для всех моих полей автозаполнения ввода, чтобы мне не приходилось писать один и тот же код для каждого из них.