#javascript #jquery #underscore.js
#javascript #jquery #underscore.js
Вопрос:
Я пытаюсь выполнить проверку. В котором я решаю добавить сообщение об ошибке и проверку true или false, даже функцию проверки для элемента в самом элементе.
_.each(this.bindings, function(keys, index) {
var element = this.$('#' index); //i am getting element
if(keys.validate amp;amp; keys.validate === true) {
element.validate = true; //i am setting attributes works
element.errorMessage = "user name must" //this too works
}
element.on('focus',function(){ //it works but i am not get the values what i added.
console.log(this.errorMessage); //consoles as undefined..how to fix?
})
})
как я могу добавить методы, атрибуты к самому элементу и вызвать его, когда мне нужно. У меня есть 50 страниц проверки. поэтому я не хочу работать отдельно.
Я делаю свою собственную проверку, не рекомендуйте мне плагин.
заранее спасибо.
Комментарии:
1. Вы пытались поместить событие фокусировки вне цикла.
2. вы должны поместить все в функцию, а затем назначить ее элементу следующим образом:
$('#myElement').data('myFunction',createdFunctionName())
3. Я верю, что это сработает. но использование цикла меня сильно сэкономит. Но я не пробовал то, что вы говорите
4. @AminJafari, я не понял с вашим комментарием. можете ли вы дать мне какой-нибудь подробный ответ?
Ответ №1:
проблема заключается в ссылке на элемент, внутри цикла element
ссылается на объект jQuery, к которому вы добавляете новые свойства, но внутри обработчика событий this
ссылается на элемент dom, который не имеет новых свойств, которые вы добавили.
_.each(this.bindings, function (keys, index) {
var element = this.$('#' index); //i am getting element
if (keys.validate amp;amp; keys.validate === true) {
//here element is a jQuery object not a dom element reference so
element[0].validate = true; //i am setting attributes works
element[0].errorMessage = "user name must" //this too works
}
element.on('focus', function () { //it works but i am not get the values what i added.
console.log(this.errorMessage); //consoles as undefined..how to fix?
//here this is dom element reference
})
})
или используйте переменную закрытия element
в обработчике событий
_.each(this.bindings, function (keys, index) {
var element = this.$('#' index); //i am getting element
if (keys.validate amp;amp; keys.validate === true) {
//here element is a jQuery object not a dom element reference
element.validate = true; //i am setting attributes works
element.errorMessage = "user name must" //this too works
}
element.on('focus', function () { //it works but i am not get the values what i added.
console.log(element.errorMessage); //consoles as undefined..how to fix?
//here this is dom element reference so use the closure variable element to obtain the newly added properties
})
})
Комментарии:
1. @3gwebtrain можете ли вы попробовать
element[0].errorMessage
в первом примере … также войтиconsole.log(element[0])
2. второй метод, похоже, работает. и как я могу добавить слушателя к этому, на foucs, blur ..? то же, что и другие методы?
3. как я могу попросить сделать вызов, всегда, чтобы мой элемент стал состоянием включения?
Ответ №2:
Попробуйте использовать jQuery.data() -метод:
_.each(this.bindings, function(keys, index) {
var element = $('#' index); //i am getting element
if(keys.validate amp;amp; keys.validate === true) {
element.data('validate', true); //i am setting attributes works
element.data('errorMessage', 'user name must') //this too works
}
element.on('focus',function(){ //it works but i am not get the values what i added.
console.log(this.data('errorMessage')); //consoles as undefined..how to fix?
})
})
Ответ №3:
Я думаю, что решение заключается в использовании .bind вместо .on:
_.each(this.bindings, function(keys, index) {
var element = this.$('#' index); //i am getting element
if(keys.validate amp;amp; keys.validate === true) {
element.validate = true; //i am setting attributes works
element.errorMessage = "user name must" //this too works
}
element.bind('focus',function(){ //it works but i am not get the values what i added.
console.log(this.errorMessage); //consoles as undefined..how to fix?
})
})