好的 - 所以由于某种原因,jQuery UI Selectmenu-button混乱了focus()和blur() - 事件 - 它们不会触发。有没有办法让这些事件触发,而不必在selectmenu() - 赋值中使用函数?
我问的原因是我有一个整体功能,用于输入,textarea等的焦点和模糊事件,这也很好,也可以在selectmenu上使用 - 但因为它不接受模糊和焦点,这使它更难。
目前,我有以下代码:
$('input,textarea,select').on('blur focus',function(event) {
var $this = $(this),
thisID = $this.attr('id'),
thisType = $this.attr('type'),
thisContent = $this.val(),
thisForm = $this.parents('form').attr('id'),
isRequired = $this.attr('required'),
getMessage = '',
elementPosition = $this.position(),
elementWidth = $this.width(),
elementHeight = $this.height(),
checkmarkPosition = (elementPosition != undefined) ? elementPosition.left + (elementWidth-10) : '',
topPosition = (elementPosition != undefined) ? Math.floor(elementPosition.top) : '';
if ($(this).hasClass('required')) {
thisContent = $this.text();
}
if (event.type == 'blur') {
if (isRequired == 'required' && (thisContent == '' || thisContent == 'Can\'t be empty')) {
getMessage = 'requiredField';
} else if (thisType == 'email') {
if (validateEmail(thisContent) == false) {
getMessage = 'notValidEmail';
} else {
getMessage = 'checkMark';
}
} else {
getMessage = 'checkMark';
}
}
if (getMessage != '' && getMessage != undefined) {
$.post('/returnmessages.php', {getmessage:getMessage}, function(data) {
data = $.parseJSON(data),
message = data.returnmessage,
infoState = data.infostate;
if (infoState != '' && infoState != undefined && thisType != 'submit') {
if (infoState == 'success') {
$this.addClass(infoState).after('<span style="position: absolute; left: '+(checkmarkPosition)+'px; top: '+(topPosition+10)+'px;" class="fa fa-check"></span>');
} else if (infoState == 'error' && (thisContent == '' || thisContent == undefined)) {
$this.addClass(infoState).prop('placeholder',message).next('span').remove();
}
}
})
}
})
适用于常规输入的常规事件,但不适用于selectmenu元素。它是一个函数,在元素本身中返回“ok”(复选标记)和不同的错误消息等,因此不需要在单独的元素中附加错误消息。
任何人都知道如何使这项工作?
答案 0 :(得分:0)
如果您的意思是选择不会触发您自己的功能,您可以使用
$routeMiddleware
希望它有用