允许用户仅单击一个“.”
Allowing user to click only one "."
我正在尝试实现一个简单的javascript-html计算器。我想做的是,用户只输入一个"."。我该如何控制?这是我尝试过的代码。
我已经可以找到"."的数字,但我现在很困惑,这个 placeAll 函数也没有用空字符串替换"."。
String.prototype.replaceAll = function(search, replace)
{
//if replace is null, return original string otherwise it will
//replace search string with 'undefined'.
if(!replace)
return this;
return this.replace(new RegExp('[' + search + ']', 'g'), replace);
};
function calculate(){
var value = document.calculator.text.value;
var valueArray = value.split("");
var arrayLenght = valueArray.length;
var character = ".";
var charCount = 0;
for(i=0;i<arrayLenght;i++){
if (valueArray[i]===character) {
charCount += 1;
}
}
if(charCount>1){
var newValue=value.replaceAll(".","");
alert(newValue);
}
}
我最近用下面的代码完成了这个。它位于为字段上的每次按键触发的函数中。它可能有点混乱,我相信有更好的方法,但它有效。它还允许某人输入"."(如果他们选择了一个),因为它将替换该选定的一个:
// Function to verify number
function isNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
// Function called (below) to get text if it is selected
function getSelectionText() {
var text = "";
if (window.getSelection) {
text = window.getSelection().toString();
} else if (document.selection && document.selection.type != "Control") {
text = document.selection.createRange().text;
}
return text;
}
// jQuery function on keypress for the textbox
$(".textbox").on("keypress", function (e) {
var fieldVal = $(this).val();
if (e.keyCode == 9) return true; // tab
var keyPressed = String.fromCharCode(e.keyCode);
if (keyPressed == "." && ((fieldVal.indexOf(".") == -1) || getSelectionText().indexOf(".") > 0)) return true; // decimal places, only allow one
return (isNumber(keyPressed));
});
编辑:我应该提到,isNumber()函数还会检查以验证最终结果是否为数字。如果你愿意,我可以发布。
编辑 2:修改代码块以添加 isNumber() 函数。
您的(主要)问题是此测试:
if(!replace)
当替换""
时,!""
true
。
将测试更改为
if (replace==null)
(它适用于undefined
和null
)
但我真的不明白为什么当你似乎想要时需要定义一个replaceAll
函数
var newValue=value.replace(/'./g,"");
编辑:如果你想要的是将所有点分开,你可以做的第一个点
var i=0, newValue=value.replace(/'./g, function(){ return i++ ? "," : "." });
(在此之前你不需要数,i
将是点数)
相关文章:
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- 如何在Javascript中创建一个所有用户都可以访问的变量
- 如何创建一个提示用户输入登录id和密码的网站
- 如何在 JS 中比较两个日期?一个是用户选择的,一个是当前日期
- 为什么可以't我有一个Facebook用户'的名字
- 在一个facebook应用程序中为一个facebook用户获取不同的用户ID
- 我有一个从用户那里收集数据的表单,我需要用JavaScript停止它
- 我们代表一个网络用户
- React Native:一个Stripe用户如何向另一个Stripe用户发送支付
- 在浏览器中显示一个向用户请求信息的输入窗口是可能的
- 打开一个URL+用户使用Javascript输入的文本
- 在WordPress中点击创建一个新用户
- 制作一个带有用户定义字符的警告框
- 如何获得一个随机用户输入变量返回在html
- 当尝试用另一个facebook用户登录时,它说控制台日志中有错误
- 如何添加一个随用户滚动滚动的按钮
- 如何强制web仅在用户是最后一个chrome用户时才支持
- 使用jQuery获取一个Twitter用户
- 如何认证一个facebook用户安全通过javascript
- 是否有可能获得一个普通用户的twitter关注者数量?