【问题标题】:Can not type anything in FireFox无法在 FireFox 中输入任何内容
【发布时间】:2012-12-31 13:25:33
【问题描述】:

除了所有其他问题之外,我还遇到了奇怪的问题。我正在创建 ASP.NET MVC 应用程序。我正在使用 flexigrid 并尝试使用模态对话框。在 IE、Google Chrome 和 Opera 中,我只能在 Client No control 中输入数字,但在 FireFox 中我无法输入任何内容。

这是控件的呈现方式:

<div id="add-edit-dialog" class="ui-dialog-content ui-widget-content" style="width: auto; min-height: 0px; height: 622px;" scrolltop="0" scrollleft="0">
<form id="add-edit-form" novalidate="novalidate">
<fieldset>
<legend>Client Info</legend>
<input id="fntype" type="hidden" name="fntype" value="">
<input id="ClientId" type="hidden" value="" name="ClientId" data-val-number="The field ClientId must be a number." data-val="true">
<div class="editor-label" style="background-color: rgb(255, 255, 255);">
<div class="editor-field" style="background-color: rgb(255, 255, 255);">
<input id="ClientNumber" class="numericOnly input-validation-error" type="number" value="" name="ClientNumber" data-val-required="The Client No field is required." data-val-remote-url="/Client/doesClientNoExist" data-val-remote-type="POST" data-val-remote-additionalfields="*.ClientNumber,*.ClientId" data-val-remote="Client Number already exists. Please enter a different Client Number." data-val-number="The field Client No must be a number." data-val="true">
<span class="field-validation-error" data-valmsg-replace="true" data-valmsg-for="ClientNumber">

我正在使用我自己的类 numericOnly 并输入数字(在 Google Chrome 中显示为微调器)。

我有 CardNumbers.js 文件,我以这种方式定义 numericOnly 类:

$(".numericOnly").keypress(function (e) {
    if (String.fromCharCode(e.keyCode).match(/[^0-9]/g)) return false;
});

我不久前在 StackOverflow 的一个问题中找到了上面的代码,它在其他浏览器中运行良好。

那么,您知道这里可能出了什么问题吗?为什么我只能在 FireFox 中输入任何内容?

【问题讨论】:

    标签: javascript css asp.net-mvc jquery-ui cross-browser


    【解决方案1】:

    这听起来更像是浏览器问题。如果您的 Firefox 已过期,请尝试通过“帮助”>“关于”或http://getfirefox.com/ 进行更新。我刚刚将它带到了 Firefox v18(发布频道的最新版本)中的 HTML 测试平台,它运行良好。

    【讨论】:

    • 我使用的是 17.1 版本,我认为它是最近的版本。无论如何,我现在正在下载更新,我会告诉你进展如何。
    • 升级 FireFox 没有帮助,我仍然无法输入任何内容 :(
    • 我刚刚注意到我无法在客户端无输入文本框中的第一页(即纯页面)上键入任何内容,但我只能在 flexigrid 的寻呼机控件中键入数字。我确实更改了 flexigrid 以使用 number 和 numericOnly 类,对于该控件也是如此。
    • 这是我在 FireBug 中发现的内容:

    • 为什么要添加“有效”类?这就是它可以正常工作的地方:
      页面 of 1
    【解决方案2】:

    试试这个解决方案。我希望这就是你要找的。​​p>

    改变一下

    来自

    if (String.fromCharCode(e.keyCode).match(/[^0-9]/g))
    

    if(String.fromCharCode(e.which).match(/[^0-9]/g))
    

    【讨论】:

    • e.which 属性规范了 event.keyCode 和 event.charCode。见api.jquery.com/event.which
    • 谢谢。顺便说一句,此更改也无济于事:( 不知何故,FireFox 在我的代码中嵌入了额外的类,我认为这是搞砸了。在我的代码中,这就是我所拥有的

      请查看我对 user164 的底部评论...作为它的呈现方式。它添加novalidate 标记到表单和有效类到我的类。这可能是个问题吗?
    【解决方案3】:

    试试这个:

    $(document).ready(function() {
            $(".numericOnly").keydown(function(event) {
                // Allow: backspace, delete, tab, escape, and enter
                if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 || 
                     // Allow: Ctrl+A
                    (event.keyCode == 65 && event.ctrlKey === true) || 
                     // Allow: home, end, left, right
                    (event.keyCode >= 35 && event.keyCode <= 39)) {
                         // let it happen, don't do anything
                         return;
                }
                else {
                    // Ensure that it is a number and stop the keypress
                    if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) {
                        event.preventDefault(); 
                    }   
                }
            });
        });
    

    【讨论】:

    • 我将尝试您的代码,因为我注意到我的原始代码不适用于 TAB 键。我一直在测试一个小的 test.html 文件,它似乎在 FireFox 中工作正常。我现在又开始通过我的应用进行测试了
    • 好的,经过所有的更改,我完全破坏了我的网站:(
    • 1.该控件现在允许输入任何内容(字母和数字),但网格未显示在 Google Chrome 或 FireFox 中
    猜你喜欢
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2021-03-23
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多