Javascript 空格键在表单字段中不起作用
我使用一个模板来建立一个单页的投资组合网站。联系人的行为非常奇怪。我无法在任何联系人字段中输入空格 我正在使用以下jQuery插件:Javascript 空格键在表单字段中不起作用,javascript,jquery,html,forms,Javascript,Jquery,Html,Forms,我使用一个模板来建立一个单页的投资组合网站。联系人的行为非常奇怪。我无法在任何联系人字段中输入空格 我正在使用以下jQuery插件: 加莱里菲克 皮卡乔斯 幻想箱 当您关注消息字段时,它不允许您使用任何空格。你知道为什么空格键不起作用吗?如果你关闭Javascript,它会起作用。我找不到任何正在设置的按键处理程序,因此这可能是您使用的两个JavaScript组件之间的冲突。如果没有人想出更好的主意,试着逐个关闭所有的.js引用,直到它起作用为止。然后你至少知道是谁造成的。
- 加莱里菲克
- 皮卡乔斯
- 幻想箱
当您关注消息字段时,它不允许您使用任何空格。你知道为什么空格键不起作用吗?如果你关闭Javascript,它会起作用。我找不到任何正在设置的按键处理程序,因此这可能是您使用的两个JavaScript组件之间的冲突。如果没有人想出更好的主意,试着逐个关闭所有的.js引用,直到它起作用为止。然后你至少知道是谁造成的。
934 if (this.enableKeyboardNavigation) {
935 $(document).keydown(function(e) {
936 var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
937 switch(key) {
938 case 32: // space
939 gallery.next();
940 e.preventDefault();
941 break;
如果您在对焦表单的同时滚动回文档的库部分,您会注意到按空格键会进入下一幅图像。查找32的案例并注释掉该特定案例。这对我很管用。你为什么不在页面的设置中设置enableKeyboardNavigation=false,你到底需要多少人来使用键盘导航呢
另一个选择。我通过将上面发布的代码栏中的
this.enableKeyboardNavigation
更改为this.disableKeyboardNavigation解决了这个问题。我必须禁用enableKeyboardNavigation
功能才能使其正常工作。
现在,当一个表单字段没有被选中,我按下空格键,网页就会向下滚动。考虑到所有网站都在向下滚动,我想这是正常的。我在wordpress页面上安装了gallerific gallery,该页面上也有重力表单,重力表单中的空格栏不起作用,只是在有人填写表单时不允许使用空格
@tim cooper建议将this.enableKeyboardNavigation更改为this.disableKeyboardNavigation,但这会禁用gallery上的所有导航,如果您习惯于使用键盘上的箭头键导航大量图像,这会有点糟糕
所以我做了一些不同的事情,效果很好
在jquery.gallerific.js代码的if(this.enableKeyboardNavigation)部分,我这样做了
更改此部分
case 32: // space
gallery.next();
e.preventDefault();
break;
对此
case 99999: // space
gallery.next();
e.preventDefault();
break;
(你也可以把它注释掉)
这将禁用gallerfic gallery上的空格键,但保留gallerfic gallery上的箭头功能,并修复重力表单中的表单字段空间问题
我希望这对某人有所帮助。这对我很有用:如果有任何问题或建议,请与我联系douknowshivaji@gmail.com
// Setup Keyboard Navigation
if (this.enableKeyboardNavigation) {
$(document).keydown(function(e) {
var target = e.target || e.srcElement; // hack
//disable navigation on an input editable element
if (target && target.type) return true;
var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
switch(key) {
case 32: // space
gallery.next();
e.preventDefault();
break;
case 33: // Page Up
gallery.previousPage();
e.preventDefault();
break;
case 34: // Page Down
gallery.nextPage();
e.preventDefault();
break;
case 35: // End
gallery.gotoIndex(gallery.data.length-1);
e.preventDefault();
break;
case 36: // Home
gallery.gotoIndex(0);
e.preventDefault();
break;
case 37: // left arrow
gallery.previous();
e.preventDefault();
break;
case 39: // right arrow
gallery.next();
e.preventDefault();
break;
}
});
}
这对我来说很有效,只需在按下数字32(空格按钮)时添加一个空格
$("#input").keyup(function(event){
if(event.keyCode == 32){
$("input").val($("input").val()+' ');
}
});
我一直在寻找解决方案,最终找到了一个,尽管我最初的问题不涉及gallerific
在放置事件时,我还向每个对象添加一个类,以避免堆叠事件(每次向页面添加新表单时,我都会执行此操作)
如果您有其他与输入相关的事件,这可能会对您的表单产生进一步的意外后果,但这非常适合我的场景,我认为最好在此记录:
$('input[type="text"],textarea').not('.allow-spaces').each(function () {
$(this).on('keydown', function (e) {
e.stopPropagation();
});
$(this).addClass('allow-spaces');
});
完美的我必须在父div上禁用空格事件(32),这最终在所有表单输入上禁用了它。所以这是可行的。