TextFiled 中输入金额

时间:2022-10-25 15:51:23

要求: 输入的金额不能超过六位,

小数点后面只能输入两位小数

如果 textFIled  中第一位输入的是0 ,后面必须输入小数点,否则禁止输入

用到 textfiled代理方法

#pragma mark ---- textFiledDelegate ----

- (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

//当用户使用自动更正功能,把输入的文字修改为推荐的文字时,就会调用这个方法。

//这对于想要加入撤销选项的应用程序特别有用

//可以跟踪字段内所做的最后一次修改,也可以对所有编辑做日志记录,用作审计用途。

//要防止文字被改变可以返回NO

//这个方法的参数中有一个NSRange对象,指明了被改变文字的位置,建议修改的文本也在其中

return YES;

}

给 textFiled 添加一个监听方法,监听 textFiled 的输入

[self.moneyTF addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];

具体实现方法:

@property (nonatomic, strong) NSString *max; // 默认99999.99
_max = @"99999.99";//设置一个最大值 #pragma mark ---- textFiledDelegate ----
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { _tempText = textField.text;
_tempRange = range;
_tempString = string; if (string && string.length > ) {
// 输入
if (_tempText.length == ) {
if ([string isEqualToString:@"."]) {
_tempText = @"";
return YES;
}else{
return YES;
} }else if (_tempText.length == ){
if ([_tempText isEqualToString:@""]) {
if ([string isEqualToString:@"."]) {
return YES;
}else{
return NO;
}
}
}
// 输入后不可超过 '99999.99'
if ([_tempText stringByAppendingString:string].floatValue > [_max floatValue]) {
return NO;
}
// 不可超过8位
if (_tempText.length >= _max.length) {
return NO;
} NSRange docRange = [_tempText rangeOfString:@"."];
if (docRange.location != NSNotFound) {
// 已输入小数点, 禁止再输入小数点
if ([string isEqualToString:@"."]) {
return NO;
}
// 小数点后位数
NSUInteger decimals = _tempText.length - (docRange.location + docRange.length);
if (decimals == ) {
// 小数点后两位,禁止输入任何字符
return NO;
}else if (decimals == ){
// 小数点后一位,禁止输入 '0'
if ([string isEqualToString:@""]) {
return NO;
}
}
}else{
if (_tempText.length == ) {
// 第一位
if ([string isEqualToString:@"."] || [string isEqualToString:@""]) {
return NO;
}
}
}
} return YES;
} -(void)textFieldDidChange :(UITextField *)theTextField{ NSRange docRange = [_tempText rangeOfString:@"."];
if (_tempString &&_tempString.length > ) {
//* 输入 */
if (docRange.location != NSNotFound) {
//有小数点
theTextField.text = [NSString stringWithFormat:@"%@%@",_tempText,_tempString];
}else {
if ([_tempString isEqualToString:@"."]) {
//是小数点
theTextField.text = [NSString stringWithFormat:@"%@%@",_tempText,_tempString];
}else {
//不是小数点
theTextField.text = [NSString stringWithFormat:@"%ld",_tempText.integerValue * + _tempString.integerValue];
}
}
}else { //删除
theTextField.text = [_tempText substringToIndex:_tempText.length -];
} }

TextFiled 中输入金额的更多相关文章

  1. iOS textField输入金额的限制,小数点前9位,后面两位

    iOS textField输入金额的限制,小数点前9位,后面两位,如果不加小数点,最大位数是9位,加上小数点,最大位数是12位,超出最大位数可删除 - (BOOL)textField:(UITextF ...

  2. UITextField 的限制输入金额(可为小数的正确金额)

    要判断输入金额为正确金额的方法有两个,一个是用正则表达式,另一个就是用textfield的代理方法 有时候难免遇到这样的需求,不符合规则的金额就不让输入时,那用这种方法比较合理 如果设置输入键盘为De ...

  3. UITextField 对输入金额的约束

    [2016/1/18更新] -- 五个人辛辛苦苦干了一年的项目终于上线了,今天有空看了一下正则表达式教程,然后开始rebuild之前的种种对字符串的约束,首先就从这个金额输入框开始吧,修改后的代码如下 ...

  4. input框输入金额显示千分位

    比如输入:1000000,则显示为1,000,000(或者是保留3位小数:1,000,000.000) 知识点: 1)JavaScript parseFloat() 函数: 定义:parseFloat ...

  5. vue表格中显示金额格式化与保存时格式化为数字并校验!

    最近项目中遇到了成本计算的,需要显示金额,保存一下,以后方便直接拿来用! 一 数字转金额格式显示 //数字转金额格式 format:function(s){ if(/[^0-9\.]/.test(s) ...

  6. 微信支付v3开发(5) 扫码并输入金额支付

    关键字:微信支付 微信支付v3 动态native支付 统一支付 Native支付 prepay_id 作者:方倍工作室 本文介绍微信支付下的扫描二维码并输入自定义金额的支付的开发过程. 注意 微信支付 ...

  7. mailto实现将用户在网页中输入的内容传递到本地邮件客户端

    背景: 想在自己的网站中有这样一个设计: 用户点击提交按钮之后,就会打开本地邮件客户端,并自动将他在输入框中输入的内容作为邮件的内容,像下面这样: mailto可以帮助实现这个功能. 简介: mail ...

  8. 在浏览器中输入URL按下回车键后发生了什么

    在浏览器中输入URL按下回车键后发生了什么 [1]解析URL[2]DNS查询,解析域名,将域名解析为IP地址[3]ARP广播,根据IP地址来解析MAC地址[4]分别从应用层到传输层.网络层和数据链路层 ...

  9. jquery限制文本框只能输入金额

    $("#batch_diff_percent").keyup(function () { var reg = $(this).val().match(/\d+\.?\d{0,2}/ ...

随机推荐

  1. 使用FragmentTabHost+TabLayout+ViewPager实现双层嵌套Tab

    大多数应用程序都会在底部使用3~5个Tab对应用程序的主要功能进行划分,对于一些信息量非常大的应用程序,还需要在每个Tab下继续划分子Tab对信息进行分类显示. 本文实现采用FragmentTabHo ...

  2. springrain 1.1 发布,spring 的极简封装

    经过2个月的测试修改,springrain1.1已经稳定,今日发布. 主要改动如下: 1.添加批量更新和保存的方法 2.添加maven分支 3.添加博客管理的demo 4.增加redis做为缓存实现 ...

  3. jQuery 操作html元素

    1. 添加元素 动态添加html 元素是一个非常重要的功能. jQuery可以非常方便的做这样的事情: $h1 = $('<h1>Hello</h1>') $(".i ...

  4. 闲来瞎扯 -- 在vs2008下编写linux程序

    虽说vim很强大,但是个人感觉器代码提示功能不如visual assist来的强大.如何使用visual assist来实现代码的提示功能呢? 首先说明我的环境 : 宿主机是xp(O(∩_∩)O~还是 ...

  5. Git 将本次修改追加在上一次修改上面

    Git 将本次修改追加在上一次修改上面 git add . git commit --amend 之后就是进入日志提交页面 确保change-Id那条记录出现在最后一行,如: zh-->en 修 ...

  6. struts2 模型分配问题和延迟加载问题

    傅型号值问题: 首先须要说明的是:Action在请求到达ActionProxy时已经创建出来了,而且对应的创建了一个值栈. 在拦截器到达之前这个图片已经OK了.Action已经创建.并且压入了值栈vs ...

  7. 在SSIS中使用自定义的DLL文件

    原文:在SSIS中使用自定义的DLL文件 步骤1.开发dll(需要签名) using System;using System.Collections.Generic;using System.Text ...

  8. unity demo之坦克攻击

    先展示一下成果吧,节后第一天上班简直困爆了,所以一定要动下脑子搞点事情. 分析: 1.涉及到的游戏对象有:坦克,摄像机,场景素材(包含灯光),子弹 2.坦克具有的功能:移动,旋转,发射子弹,记录生命值 ...

  9. Django&plus;Vue打造购物网站&lpar;一&rpar;

    环境搭建 python == 3.6 Django == 2.0 创建工程 django-admin startproject MxShop 配置setting.py文件 # 数据库 DATABASE ...

  10. Python-dataframe合并&lpar;merge函数)

    import pandas as pd import numpy as np df1=pd.DataFrame({'key':['b','b','a','c','a','a','b'],'data1' ...