Вставьте NoKeyboardEditableText
вместо вашего TextField
class NoKeyboardEditableText extends EditableText {
NoKeyboardEditableText({
@required TextEditingController controller,
TextStyle style = const TextStyle(),
Color cursorColor = Colors.black,
bool autofocus = false,
Color selectionColor
}):super(
controller: controller,
focusNode: NoKeyboardEditableTextFocusNode(),
style: style,
cursorColor: cursorColor,
autofocus: autofocus,
selectionColor: selectionColor,
backgroundCursorColor: Colors.black
);
@override
EditableTextState createState() {
return NoKeyboardEditableTextState();
}
}
class NoKeyboardEditableTextState extends EditableTextState {
@override
Widget build(BuildContext context) {
Widget widget = super.build(context);
return Container(
decoration: UnderlineTabIndicator(borderSide: BorderSide(color: Colors.blueGrey)),
child: widget,
);
}
@override
void requestKeyboard() {
super.requestKeyboard();
//hide keyboard
SystemChannels.textInput.invokeMethod('TextInput.hide');
}
}
class NoKeyboardEditableTextFocusNode extends FocusNode {
@override
bool consumeKeyboardToken() {
// prevents keyboard from showing on first focus
return false;
}
}
В jQuery нет никакого встроенного oncontextmenu обработчика событий, но можно сделать что-то вроде этого:
$(document).ready(function(){
document.oncontextmenu = function() {return false;};
$(document).mousedown(function(e){
if( e.button == 2 ) {
alert('Right mouse button!');
return false;
}
return true;
});
});
В основном я отменяю oncontextmenu событие элемента DOM для отключения контекстного меню браузера, и затем я получаю событие mouseDown с jQuery, и там можно знать в конечном счете аргумент, какая кнопка была нажата.
Можно попробовать вышеупомянутый пример здесь.
contextmenu
событие?
Я использовал бы onmousedown
или onclick
затем захватите MouseEvent
свойство кнопки для определения, какая кнопка была нажата (0 = оставленный, 1 = середина, 2 = право).
Функция возвращается слишком рано. Я добавил комментарий к коду ниже:
$(document).ready(function(){
$(document).bind("contextmenu",function(e){
return false;
$('.alert').fadeToggle(); // this line never gets called
});
});
Попробуйте поменять местами return false;
со следующей строкой.