2011-06-10 68 views
2

這裏是我的代碼,它使用asp.net AJAX客戶端庫添加事件處理程序允許某些碼鍵通過數字文本框的按鍵,keyup事件

function IsDigit(id) { //short variable,args name for best minification 
    if ($get(id)) { 
     var v = function (e) { 
       var r = /\d/; 
       if (!r.test(String.fromCharCode(e.keyCode))) e.preventDefault(); 
      } 
     $addHandlers($get(id), { 
      keydown: v 
     }); 
    } 
} 

$get(ID)獲取與ID控制 $addHandlers添加事件處理程序來控制。在這裏,我將它附加到ID爲id的控件上。這一切都很好,文本框只接受數字輸入,但問題是他想刪除所有數字並想輸入其他數字。所以像[SHFT + HOME]然後刪除,[刪除]不起作用。請有人可以更好地完善代碼。也就是這樣的工作 我做這個暫時解決了它的KEYDOWN最優的,但這的確讓意外的字符短暫第二則相反刪除它

function IsDigit(id) { //short variable,args name for best minification 
    if ($get(id)) { 
     var p = ""; 
     var v = function (e) { 
       var r = /^\d*$/; 
       if (r.test(this.value)){p = this.value;} else {this.value=p;}// e.preventDefault(); 
      } 
     $addHandlers($get(id), { 
      keyup: v 
     }); 
    } 
} 
+0

你能想澄清什麼允許輸入字段包含?它是否只包含數字數據? – 2011-06-16 13:02:07

+0

@Ioxley是隻有數字數據 – Deeptechtons 2011-06-21 04:10:21

回答

0

比試圖做您的驗證onkeydown/onkeyup你可能會發現它更容易驗證onblur。這樣,您不必擔心某人可能用於選擇/刪除/重新鍵入文本的各種組合鍵,例如ctrl +方向鍵,ctrl + v粘貼文本,ctrl + a選擇全部。

你總是可以使用新的HTML5 <input type="number">來限制輸入,然後用Modernizr添加事件處理程序的代碼對於不支持新的輸入類型的瀏覽器:

if (Modernizr.inputtypes.number) { 
    ... 
    // Add your code in here 
    ... 
}  
+0

增加額外的3行50K是一個帶寬豪豬,+更無用的代碼 – Deeptechtons 2011-06-21 08:28:24

相關問題