Number : <input type="text" name="inputId" id="quantity" maxlength="11" />
当用户输入输入时,它应满足以下条件 1.值可以是正数或负数或浮动,最大长度为11
这是我到目前为止所写的内容
$(document).ready(function () {
//called when key is pressed in textbox
$("#inputID").keypress(function (e) {
//if the letter is not digit then display error and don't type anything
if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57 || e.which == 45 )) {
//display error message
if(e.which == 45) {
var value = $("#quantity").val();
if(value.indexOf('-') != -1)
{
var index = value.lastIndexOf('-');
if(index = 0){
return false;
}
}
}
else
{
$("#quantity").val("-");
}
}
});
});
我没有考虑&#34;。&#34;截至目前,只有负号应该在零指数处。
有没有更好的方法来执行此操作,或者修改此代码将是正确的方法。
请建议。
答案 0 :(得分:1)
最简单的方法可能是使用HTML5验证:
<body>
<form>
<input type="text" maxlength="11" pattern="\-?\d+\.?\d+" />
<input type="submit" value="Submit" />
</form>
</body>
答案 1 :(得分:0)
除非您愿意使用其中一个可用的输入掩码库,否则您的操作对我来说似乎是合理的。
有一点需要注意的是,您的代码尚未考虑,是用户粘贴还是拖放无效字符。另外,不要忘记考虑使用逗号作为小数位指示符的多个小数点或区域设置。
您可能还会考虑科学指数表示法,千位分隔符,前导加号,用括号而不是连字符表示的否定性,其他数字系统(如十六进制等)......如您认为合适。
答案 2 :(得分:0)
我在下面的帖子中找到了答案
Disable Text Entry in <input type="number">
修改最大长度
$(document).on('keyup','#divid table tbody tr td input', function () {
// Remove invalid characters
var sanitized = $(this).val().replace(/[^-.0-9]/g, '');
// Remove non-leading minus signs
sanitized = sanitized.replace(/(.)-+/g, '$1');
// Remove the first point if there is more than one
sanitized = sanitized.replace(/\.(?=.*\.)/g, '');
// Update value
$(this).val(sanitized);
if(sanitized.indexOf(".")!= -1 && sanitized.indexOf("-")!= -1)
{
$(this).attr("maxlength","13");
}
else if(sanitized.indexOf(".")!= -1)
{
$(this).attr("maxlength","12");
}
else if(sanitized.indexOf("-")!= -1)
{
$(this).attr("maxlength","12");
}
else
{
$(this).attr("maxlength","11");
}
});