onpropertychange與輸入法有關

2021-09-01 03:08:22 字數 793 閱讀 1877

頁面輸入框經常有只允許輸入數字的限制,一般都用onpropertychange事件比較簡單,之前寫了這樣的**

var obj=document.getelementbyid("input1");

if(isnan(obj.value))

在別人機器上執行沒問題,但是一到我機器輸入中文就會奔潰,最後發現他用的是google輸入法,我是搜狗的(qq輸入法也會崩潰),但是將onproperychange換成onblur方法又不會有問題,不知道具體原因,以下是另一種解決辦法,引用自黑色頭髮:留作參考

只能輸入數字和1個小數點,不能輸入數字和小數點外的其他任何字元包括空格

onpropertychange="if(isnan(value)) value=value.substring(0,value.length-1);" //只能輸入數字和小數點

style="ime-mode:disabled; " //遮蔽輸入法,不允許輸入漢字

οnpaste="return false" //不允許貼上

οnkeypress="return event.keycode!=32"  //不允許輸入空格

注意:很容易犯以下的錯誤

function isnumber()

}

這種方法實際是不對的,因為parsefloat()方法僅僅在字串的第乙個字元不能被轉換為數字才會返回 nan,如果是12sss,則返回12,所以不能通過先轉化再判斷nan,倒是應該再轉換之前判斷是否nan

發現輸入法有bug

發現輸入法有bug,因為.net中的 自動完成 使用的是ctrl space,所以就把輸入法的切換中應用ctrl space的一項改成了其他按鍵,最近經常出現 不能切換中英文輸入法 的問題,想切換為中文輸入法只能登出一下才行啊,而且右鍵點選輸入法圖示想要設定輸入法時,又經常彈出不同的選單,有時是 屬...

輸入法控制

unit u ime inte ce implementation uses windows,forms,imm,sysutils,messages varstmpclassname,stmpime string 失去焦點時的控制項名稱和輸入法名稱 msghandle hhook 0 判斷當前類名是...

輸入法鉤子

分為1個dll工程和1個win32空工程。新建乙個dll空工程,字符集使用多位元組字符集。以下是源 shurufa.h ifndef shurufa h define shurufa h include include include include pragma comment lib,imm32...