2013-01-17 25 views
2

除了我所有的其他问题之外,我还会遇到一些奇怪的问题。我正在创建ASP.NET MVC应用程序。我正在使用flexigrid并试图使用Modal对话框。在IE浏览器中,Google Chrome和Opera I只能在客户端无法控制的情况下键入数字,但在FireFox中,我无法输入任何内容。无法在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和类型号(显示为谷歌浏览器微调)。

我有CardNumbers.js文件,我定义numericOnly类是这样的:

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

上面,我发现前一阵子在的StackOverflow的问题之一,它在其他浏览器的工作原理确定的代码。

那么,你看这里有什么可能是错的,为什么我只能在FireFox中输入任何内容?

回答

2

试试这个:

$(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(); 
       } 
      } 
     }); 
    }); 
+0

我将尝试您的代码,因为我注意到我的原始代码无法与TAB键一起工作我一直在测试一个小的test.html文件,它似乎工作好了在FireFox。我现在回到从我的应用程序 – Naomi

+0

测试好吧,经过所有的变化,我完全打破了我的网站:( – Naomi

+0

1.控制现在允许吨o输入任何内容(包括字母和数字),但网格不会显示在Google Chrome或FireFox中 – Naomi

1

这听起来像更多的浏览器问题。如果Firefox已过时,请尝试通过帮助>关于或在http://getfirefox.com/进行更新。我只是把它带到Firefox v18的HTML测试平台(最新发布频道),它运行良好。

+0

我在版本17.1上,我认为这是相当新的。无论如何,我现在正在下载更新,我会让你知道它是如何发生的。 – Naomi

+0

升级FireFox没有帮助,我仍然无法输入任何东西:( – Naomi

+0

我刚刚注意到我无法在客户端无输入文本框中的第一页上输入任何内容(这是普通页面),但我只能在在flexigrid中的寻呼机控制,我改变了flexigrid有点使用数字和numericOnly类,并为该控制相同。 – Naomi

3

试试这个解决方案。我希望这是你正在寻找的。

只要改变

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

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

这段代码中的e是什么? – Naomi

+1

e.which属性规范化了event.keyCode和event.charCode。请参阅http:// api。jquery.com/event.which/ –

+0

谢谢。顺便说一句,这个变化也没有帮助::(不知何故,FireFox在我的代码中嵌入了额外的类,我认为这是让它变混乱的原因。 =“clientNo”>客户端号码:
请查看我对bottom16的底部评论...它是如何呈现的,它添加了novalidate标记到我的班的形式和有效的类。这可能是一个问题吗? – Naomi

相关问题