Javascript 空格键在表单字段中不起作用

Javascript 空格键在表单字段中不起作用,javascript,jquery,html,forms,Javascript,Jquery,Html,Forms,我使用一个模板来建立一个单页的投资组合网站。联系人的行为非常奇怪。我无法在任何联系人字段中输入空格 我正在使用以下jQuery插件: 加莱里菲克 皮卡乔斯 幻想箱 当您关注消息字段时,它不允许您使用任何空格。你知道为什么空格键不起作用吗?如果你关闭Javascript,它会起作用。我找不到任何正在设置的按键处理程序,因此这可能是您使用的两个JavaScript组件之间的冲突。如果没有人想出更好的主意,试着逐个关闭所有的.js引用,直到它起作用为止。然后你至少知道是谁造成的。

我使用一个模板来建立一个单页的投资组合网站。联系人的行为非常奇怪。我无法在任何联系人字段中输入空格

我正在使用以下jQuery插件:

  • 加莱里菲克
  • 皮卡乔斯
  • 幻想箱

当您关注消息字段时,它不允许您使用任何空格。你知道为什么空格键不起作用吗?

如果你关闭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),这最终在所有表单输入上禁用了它。所以这是可行的。