2013-01-17 27 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

相關問題