使用UITextField限制输入金额是正确小数

要判断输入金额为正确金额的方法有两个,一个是用正则表达式,另一个就是用textfield的代理方法

有时候难免遇到这样的需求,不符合规则的金额就不让输入时,那用这种方法比较合理

如果设置输入键盘为Decimal Pad时,输入为数字和小数点;如果设置键盘为Number Pad时,输入为纯数字

非以上情况时,那要判断输入时是否为合理输入,如代码里

代码如下:

(single >='0' && single<='9') || single=='.'

如果本身仅仅是输入数字或者小数点而已,那么可以去掉这个判断条件

下面这个限制输入金额限制得很死:

1.要求用户输入首位不能为小数点;

2.小数点后不超过两位,小数点无法输入超过一个;

3.如果首位为0,后面仅能输入小数点

4.输入金额不超过11位

这个输入首位不能为0时,可以在限制首位不能为“.”的地方加上,可以根据自己需要修改.

if(single == '.'){
  [textField.text stringByReplacingCharactersInRange:range withString:@""];
  return NO;
}

但这个金额能输入0.00之类的,输入需要的话还得在发生请求数据钱判断空和输入最低金额允许,不符合时就return;

限制如下:

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField.text.length > ) {
return range.location < ;
}else{
BOOL isHaveDian = YES;
if ([textField.text rangeOfString:@"."].location==NSNotFound) {
isHaveDian=NO;
}
if ([string length]>)
{
unichar single=[string characterAtIndex:];//当前输入的字符
if ((single >='' && single<='') || single=='.')//数据格式正确
{
//首字母不能为小数点
if([textField.text length]==){
if(single == '.'){
[textField.text stringByReplacingCharactersInRange:range withString:@""];
return NO;
}
}
if([textField.text length]== && [textField.text isEqualToString:@""]){
if(single != '.'){
[textField.text stringByReplacingCharactersInRange:range withString:@""];
return NO;
}
}
if (single=='.')
{
if(!isHaveDian)//text中还没有小数点
{
isHaveDian=YES;
return YES;
}else
{
[textField.text stringByReplacingCharactersInRange:range withString:@""];
return NO;
}
}
else
{
if (isHaveDian)//存在小数点
{
//判断小数点的位数
NSRange ran=[textField.text rangeOfString:@"."];
NSInteger tt=range.location-ran.location;
if (tt <= ){
return YES;
}else{
return NO;
}
}
else
{
return YES;
}
}
}else{//输入的数据格式不正确
[textField.text stringByReplacingCharactersInRange:range withString:@""];
return NO;
}
}
else
{
return YES;
}
}
} 

以上所述是小编给大家介绍的以上所述是小编给大家介绍的使用UITextField限制输入金额是正确小数的相关知识,希望对大家

有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • iOS 中 使用UITextField格式化银行卡号码的解决方案

    今天做格式化银行卡,避免重复造轮子,找度娘查了下,看到一个不错的实现方式,记录下来,并附带实现思路 #pragma mark - UITextFieldDelegate UITextField键入字符后调用 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { //拿到为改变前的字符串 NSStri

  • 解决iOS7上UITextField限制字数输入导致崩溃问题的方法

    在一些场景中,需要限制用户的输入字数,例如在textField里进行控制(textView也类似,崩溃原因也相同),如图所示 系统会监听文本输入,需要注意的第一点是输入法处于联想输入还未确定提交的时候,对于第三方输入法例如搜狗,联想状态下的输入,是监听不到,除非点击确定输入到textField,才会触发changed事件. 但对于系统键盘,联想状态下的输入也会监听,这里如果不处理就容易发生崩溃,例如当快要达到字数限制时,继续输入,此时textField.text =联想输入文字+textFiel

  • IOS UI学习教程之设置UITextField各种属性

    UITextField是IOS中非常常用的一个控件,用来接收用户输入信息,完成应用和用户的交互.它的主要属性设置如下: //初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)]; //设置边框样式,只有设置了才会显示边框样式 text.borderStyle = UITextBorderStyleRoundedRect; typedef enu

  • js格式化输入框内金额、银行卡号

    我们在项目中经常遇到需要格式化的金额数和银行卡号,一般我们常见的有两种表现形式:输入框内格式化和输入框外格式化.这里我主要把我在项目中遇到的输入框内部格式化的,代码亮出来,框外的格式化相对简单一点. 页面代码: <div class="wrap"> <input type="text" id="bankCard" placeholder="输入银行卡号"> </div> <div cl

  • iOS应用开发中使UITextField实现placeholder属性的方法

    我们都知道iOS开发中的UITextField有个placeholder属性,placeholder可以很方便引导用户输入.但是UITextView却没有placeholder属性. 一.猥琐的方法 如何让UITextView也有placeholder功能呢?今天给各位分享一个比较猥琐的做法.思路大概是这样的: 把UITextView的text当placeholder使用. 在开始编辑的代理方法里清除placeholder. 在结束编辑的代理方法里在设置placeholder. 实现方法: 1.

  • iOS开发之自定义UITextField的方法

    UITextField是IOS开发中用户交互中重要的一个控件,常被用来做账号密码框,输入信息框等. 观察效果图 UITextField有以下几种特点: 1.默认占位文字是灰色的 2.当光标点上去时,占位文字变为白色 3.光标是白色的 接下来我们通过不同的方法来解决问题 一.将xib中的UITextField与代码关联 通过NSAttributeString方法来更改占位文字的属性 (void)viewDidLoad { [super viewDidLoad]; // Do any additio

  • 基于jquery的bankInput银行卡账号格式化

    jquery bankInput插件是银行卡进行格式化显示,能控制文本框输入最小最大个数.控制只能输入数字.控制不能粘贴不能使用输入法.同时插件能实现自动加载格式化显示和支持非输入框的格式话显示. 复制代码 代码如下: <script type="text/javascript" src="__JS__/jquery.bankInput.js"></script> <script>$(".account").b

  • 使用UITextField限制输入金额是正确小数

    要判断输入金额为正确金额的方法有两个,一个是用正则表达式,另一个就是用textfield的代理方法 有时候难免遇到这样的需求,不符合规则的金额就不让输入时,那用这种方法比较合理 如果设置输入键盘为Decimal Pad时,输入为数字和小数点:如果设置键盘为Number Pad时,输入为纯数字 非以上情况时,那要判断输入时是否为合理输入,如代码里 复制代码 代码如下: (single >='0' && single<='9') || single=='.' 如果本身仅仅是输入数字

  • Angular限制input框输入金额(是小数的话只保留两位小数点)

    需求 输入框要求输入金额,只能输入数字,可以是小数,必须保留小数点后两位. js判断部分: checkInput: function (event) { var id = event.target.getAttribute("id");//获取input的id var reg = /^[-?\d]+(.)?(\d{1,2})?/;//匹配正则while(!reg.test(('#' + id).val()) && ('#' + id).val() != "&q

  • Android实现EditText输入金额

    EditText是Android中一个非常实用的控件,有很多InputType,可以来达到不同的输入效果,如下图: 比如,密码输入,数字输入等等.但是最近在项目中要实现EditText输入金额,金额的限制因素很多,比如,只能输入数字和小数点,首位不能输入0和小数点,小数点后面只能保留两位等等,这些仅仅用InputType是无法实现的,今天用InputFilter来实现. 1. 首先需要将EditText的InputType设置成如下格式,保证用户只能输入小数点和数字 android:inputT

  • 通过一行代码搞定UITextField的输入格式限制

    ZASTextFieldFormat开发背景 在开发的过程中,每次写到UITextField,就不由得心里不爽,因为要考虑到各种输入限制,实现代理.通知等一些麻烦繁琐的东西,就心中不爽,所以才写了这个ZASTextFieldFormat (本地下载)简单的轮子,先暂时用着,等后期在慢慢优化完善. ZASTextFieldFormat 简介 一行代码,设置UITextField的输入格式限制,比如手机号.身份证号.银行卡号格式以及输入字符类型个数的限制等: 接口说明 /** * ZASTextFi

  • jQuery Ajax显示对号和错号用于验证输入验证码是否正确

    废话不多说了,直接给大家贴代码了,具体代码如下所示: <script src="js/j.js"></script> <script> $(document).ready(function(e) { $('#yes').hide(); $('#no').hide(); $('input[name=gcode]').keyup(function(){ if($(this).val().length==4){ $.post('gbook.php',{cc

  • EditText限制输入数字,精确到小数点后1位的设置方法

    在EditText的布局文件里面设置: android:inputType="numberDecimal" 在代码中: /** 输入框小数的位数*/ private static final int DECIMAL_DIGITS = 1; InputFilter lengthfilter = new InputFilter() { public CharSequence filter(CharSequence source, int start, int end, Spanned de

  • Android EditText实现输入金额类型详解

    前言 众所周知,Android中的editText默认的属性里面是没有金额类型的,所以要实现这个功能我们就必须自己动手丰衣足食.下面话不多说了,来一起看看详细的介绍吧. 一.EditText只允许输入数字.小数点. 首先要知道金额有两部分构成,整数部分和小数部分,要实现只输入数字和小数点很简单.自己查能很容易查到. 把type设置成InputType.TYPE_NUMBER_FLAG_DECIMAL|InputType.TYPE_CLASS_NUMBER 就行 那这样做有个缺点,小数部分可以有很

  • 浅谈vue限制文本框输入数字的正确姿势

    最近遇到一个需求,需要限制文本框输入数字,而number类型的输入框有箭头,个人不是很喜欢,因此想要寻求其它途径实现.本想通过网上找个现成的插件,然而百度,谷歌一番都没有找到满意的答案,至于随手一搜出来的方案或多或少都有点缺陷.因此自己动手,丰衣足食. 事件选型 首先我们很容易想到通过事件来达到目的,大致可以通过以下几个事件来实现: keypress/keydown 思路:按键按下的时候触发,通过判断按下的是否是数字返回true/false来限制用户的输入. 缺点:无法限制用户复制粘贴的数据.

  • vue如何限制只能输入正负数及小数

    <el-input keyup.native="isFloor"/> //正数,含小数 isFloor(e,type){ if(type=='floor') { var val=e.target.value; //限制只能输入一个小数点 if (val.indexOf(".") != -1) { var str = val.substr(val.indexOf(".") + 1); if (str.indexOf(".&qu

  • javaScript强制保留两位小数的输入数校验和小数保留问题

    输入input 的格式校验: $(function(){ var data = $.trim($("#inputId").val()); //此正则表达式验证小数位是否超过两位,小数可为1位 || 2位 || 整数 if(!(/^\d+(\.\d{1,2})?$/.test(data ) || /^\d$/.test(data ) )){ alert("输入金额格式不对!最高精确到分"); return ; } //写入对应位置 $(".htmlTextC

随机推荐