2009-10-09 54 views
0

什麼是最好的方法來屏蔽一個輸入字段只允許float/double,沒有任何jquery插件。double/float的jQuery輸入驗證

NOTE:事實上我在做這樣的:

$("#defaultvalue").bind("keypress", function(e) { 
       if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) { 
        return false; 
       } 
      }); 

但那只是對數字 THX

+0

使用正則表達式將是很好的,因爲我也需要能夠檢查一個值已在一個解決方案文本框(有界) – k0ni 2009-10-09 07:45:46

回答

1

的JavaScript parseFloat()函數返回NaN,當你輸入的不是數字。對於國際化,你可能不得不更換浮點分離器(例如,使用。)

+0

parseFloat在第一個非數字處截斷。 parseFloat('1.23ABC')== 1.23。 – Greg 2009-10-09 07:51:45

+0

哦,你是對的。沒有測試......也許與正則表達式和parseFloat的組合更有意義。 – Daff 2009-10-09 08:04:05

+0

是的,但如何正確使用正則表達式?我沒有得到它運行.. – k0ni 2009-10-09 08:10:20

1
parseFloat(value) and value.match('^[0-9]*\.[0-9]*$') 

我想你可以放下parseFloat,只是使用正則表達式。

1

在HTML頁面中調用JS SetFloatEntry方法。

例子:

<html> 
<script> 
$(document).ready(function() { 

SetFloatEntry("weight"); 

}); 
</script> 
<body> 
    <input id="weight" type="text" /> 
</body> 
</html> 

將這個在您的JS refered文件:

/* Main function */ 
function SetFloatEntry(fieldName) { 
    $("#" + fieldName).keydown(function (event) { 

     return NumericField($("#" + fieldName).val(), event, true); 

    }); 
} 


/* Auxiliar */ 
var strUserAgent = navigator.userAgent.toLowerCase(); 
var isIE = strUserAgent.indexOf('msie') > -1; 

var reKeyboardChars = /[\x03\x08\x09\x0D\x16\x18\x1A\x2E\x23\x24\x25\x26\x27\x28\x2D]/; 
var reNumber = /^((\d{1,3}\.)*\d{3}|\d*,{0,1}\d+|(\d{1,3}\.)*\d{3},{0,1}\d+|\d*)$/; 

function NumericField(str, objEvent, isFloat) { 

    oldValue = str; 
    strKey = GetChar(objEvent); 

    if (((objEvent.which) ? objEvent.which : event.keyCode) == 13 
     || (((objEvent.which) ? objEvent.which : event.keyCode) == 190 && isFloat)) 
     return true; 

    if (!KeyNumber(objEvent) 
      && !reKeyboardChars.test(strKey) 
      && !(objEvent.ctrlKey 
       && reClipboard.test(strKey))) 
     return false; 

    return true; 
} 

function KeyNumber(objEvent) { 
    return reNumber.test(GetChar(objEvent)); 
} 

function GetChar(objEvent) { 
    var arrKeys = new Array(); 
    arrKeys[96] = '0'; 
    arrKeys[97] = '1'; 
    arrKeys[98] = '2'; 
    arrKeys[99] = '3'; 
    arrKeys[100] = '4'; 
    arrKeys[101] = '5'; 
    arrKeys[102] = '6'; 
    arrKeys[103] = '7'; 
    arrKeys[104] = '8'; 
    arrKeys[105] = '9'; 

    arrKeys[111] = '/'; 
    arrKeys[193] = '/'; 

    iKeyCode = GetKeyCode(objEvent); 

    if (arrKeys[iKeyCode] != null) 
     return arrKeys[iKeyCode]; 

    return String.fromCharCode(iKeyCode); 
} 

function GetKeyCode(objEvent) { 
    if (isIE) 
     return objEvent.keyCode; 
    return objEvent.which; 
} 
+0

是不是太難做? – 2012-12-04 11:35:37

+0

這也檢查所有錯誤的條目和格式。 – Weslei 2013-03-14 16:36:20