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

时间:2009-12-31 23:09:43

标签: javascript jquery html forms

我正在使用模板构建一个页面组合网站。联系表格非常奇怪。我无法在任何联系人字段中输入空格。

我正在使用以下jQuery插件:

  • Gallerific
  • PikaChoose
  • 的fancybox

当您专注于消息字段时,它不允许您使用任何空格。关于为什么空格键不起作用的任何想法?

10 个答案:

答案 0 :(得分:15)

jquery.gallerific.js实现了一个页面范围的keydown处理程序,它捕获空格键并阻止它运行。

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;

如果在仍然聚焦表单的同时滚动回文档的库部分,您会注意到按空格键会前进到下一个图像。

答案 1 :(得分:3)

找到 32 的案例,并注明具体案例。这对我有用。

答案 2 :(得分:2)

我必须禁用enableKeyboardNavigation功能才能使其正常工作。 现在,当未选择表单字段并按 SPACE 键时,网页将向下滚动。考虑到所有网站都在向下滚动,我想这是正常的。

答案 3 :(得分:2)

这对我有用,只需在按下数字32(空格按钮)时添加一个空格。

$("#input").keyup(function(event){
    if(event.keyCode == 32){
        $("input").val($("input").val()+' ');
    }
);  

答案 4 :(得分:1)

为什么不在页面设置中设置enableKeyboardNavigation = false,无论如何键盘导航的人数。

只是另一种选择。

答案 5 :(得分:1)

我通过将上面发布的代码Sparr中的this.enableKeyboardNavigation更改为this.disableKeyboardNavigation来解决了这个问题。

答案 6 :(得分:0)

如果您关闭Javascript,它可以正常工作。我找不到任何按键处理程序,因此这可能是您正在使用的两个JavaScript组件之间的冲突。如果没有人提出更好的想法,请尝试逐个关闭所有.js参考,直到它工作。然后你至少知道是谁造成的。

答案 7 :(得分:0)

我在一个wordpress页面上安装了一个画廊画廊,它上面也有一个重力形式,重力形式的空格键不起作用,只要有人填写表格就不允许空格。

@tim cooper建议将this.enableKeyboardNavigation更改为this.disableKeyboardNavigation,但这会禁用画廊上的所有导航,如果您习惯使用键盘上的箭头键导航大量图像,那将会很糟糕。

所以我做了一些与众不同的事情。

在jquery.gallerific.js代码的if(this.enableKeyboardNavigation)部分,我做了这个。

更改了这部分......

case 32: // space
gallery.next();
e.preventDefault();
break;

对此......

case 99999: // space
gallery.next();
e.preventDefault();
break;

(你也可能只是评论出来)

这会禁用画廊库中的空格键,但会保留画廊库中的箭头功能,并修复重力形式的表格字段空间问题。

我希望这有助于某人。

答案 8 :(得分:0)

这对我有用:如有任何问题或建议,请联系我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;
        }
    });
}

答案 9 :(得分:0)

我一直在寻找解决方案,但终于找到了解决方案,尽管我最初的问题并不涉及库勒菲尔。

我还在放置事件时向每个对象添加了一个类,以避免堆叠事件(每次将新表单添加到页面时,我都会执行此操作)。

如果您有其他与输入相关的事件,那么这可能会对您的表单产生意想不到的后果,但这在我的情况下非常有效,我认为在此处进行记录是一件好事:

$('input[type="text"],textarea').not('.allow-spaces').each(function () {
  $(this).on('keydown', function (e) {
    e.stopPropagation();
  });
  $(this).addClass('allow-spaces');
});