TextFiled 中输入金额
要求: 输入的金额不能超过六位,
小数点后面只能输入两位小数
如果 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 中输入金额的更多相关文章
- iOS textField输入金额的限制,小数点前9位,后面两位
iOS textField输入金额的限制,小数点前9位,后面两位,如果不加小数点,最大位数是9位,加上小数点,最大位数是12位,超出最大位数可删除 - (BOOL)textField:(UITextF ...
- UITextField 的限制输入金额(可为小数的正确金额)
要判断输入金额为正确金额的方法有两个,一个是用正则表达式,另一个就是用textfield的代理方法 有时候难免遇到这样的需求,不符合规则的金额就不让输入时,那用这种方法比较合理 如果设置输入键盘为De ...
- UITextField 对输入金额的约束
[2016/1/18更新] -- 五个人辛辛苦苦干了一年的项目终于上线了,今天有空看了一下正则表达式教程,然后开始rebuild之前的种种对字符串的约束,首先就从这个金额输入框开始吧,修改后的代码如下 ...
- input框输入金额显示千分位
比如输入:1000000,则显示为1,000,000(或者是保留3位小数:1,000,000.000) 知识点: 1)JavaScript parseFloat() 函数: 定义:parseFloat ...
- vue表格中显示金额格式化与保存时格式化为数字并校验!
最近项目中遇到了成本计算的,需要显示金额,保存一下,以后方便直接拿来用! 一 数字转金额格式显示 //数字转金额格式 format:function(s){ if(/[^0-9\.]/.test(s) ...
- 微信支付v3开发(5) 扫码并输入金额支付
关键字:微信支付 微信支付v3 动态native支付 统一支付 Native支付 prepay_id 作者:方倍工作室 本文介绍微信支付下的扫描二维码并输入自定义金额的支付的开发过程. 注意 微信支付 ...
- mailto实现将用户在网页中输入的内容传递到本地邮件客户端
背景: 想在自己的网站中有这样一个设计: 用户点击提交按钮之后,就会打开本地邮件客户端,并自动将他在输入框中输入的内容作为邮件的内容,像下面这样: mailto可以帮助实现这个功能. 简介: mail ...
- 在浏览器中输入URL按下回车键后发生了什么
在浏览器中输入URL按下回车键后发生了什么 [1]解析URL[2]DNS查询,解析域名,将域名解析为IP地址[3]ARP广播,根据IP地址来解析MAC地址[4]分别从应用层到传输层.网络层和数据链路层 ...
- jquery限制文本框只能输入金额
$("#batch_diff_percent").keyup(function () { var reg = $(this).val().match(/\d+\.?\d{0,2}/ ...
随机推荐
- 获取iOS设备信息(内存/电量/容量/型号/IP地址/当前WIFI名称)
1.获取电池电量(一般用百分数表示,大家自行处理就好) 1 2 3 4 -(CGFloat)getBatteryQuantity { return [[UIDevice current ...
- PC问题-VMware Workstation出现“文件锁定失败”
问题现象:电脑关机时挂起VMware Workstation后,第二天运行VMware Workstation出现“文件锁定失败”. 问题原因:在WIN的目录中有*.LCK文件,此文件是用来锁定当前虚 ...
- Spring Autowiring by Name
In Spring, "Autowiring by Name" means, if the name of a bean is same as the name of other ...
- Excel DNA学习笔记一
由于各种原因,被迫学习Excel DNA这个开源项目的使用方法,最后希望可以在其中,调用xll进行编码. 由此整理一下,这期间使用到的一些资料. 1.下载Excel DNA,目前最新的是0.30版 h ...
- error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏的解决方案
首先,卸载相关的软件,然后删除所有和virtual studio相关的目录 然后如果还出现该问题,则: Mark一下,解决方法:将嵌入清单设置为"否" 发生场合:在用 C++写一个 ...
- PDB符号文件信息
一.前言 这个方法是通过网上的一些方式自己学习枚举PDB文件信息. 二.代码实现 首先枚举驱动文件,这里用psapi库 #include "psapi.h" #pragma com ...
- The plot Function in matlab
from http://pundit.pratt.duke.edu/wiki/MATLAB:Plotting The plot Function The plot function is used t ...
- ubuntu为IDE(Eclipse WebStorm)添加桌面快捷方式
在ubuntu15.10环境配置webstorm和eclipse的时候会下载官网上编译好的包, bin目录下面会有一个.sh文件(linux版本), 那么一般情况下,执行 ./sh就会启动IDE, 但 ...
- Rstudio编辑界面美化设置
美化Rstudio的编辑界面有利于我们输入代码,合适的调整更是减少错误. 可以根据自己的喜好和习惯选择.
- PostgreSQL的 initdb 源代码分析之十六
继续分析 setup_description(); 展开后: 就是要把 share/postgres.description 文件的内容读入到 pg_description 和 pg_shdescri ...