UITextField 输入金额,小数点的控制输入
#pragma mark --- UITextFieldDelegate ---
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
// 判断是否有小数点
if ([textField.text containsString:@"."]) {
self.isHaveDian = YES;
}else{
self.isHaveDian = NO;
}
if (string.length > 0) {
//当前输入的字符
unichar single = [string characterAtIndex:0];
// 不能输入.0-9以外的字符
if (!((single >= '0' && single <= '9') || single == '.'))
{
return NO;
}
// 只能有一个小数点
if (self.isHaveDian && single == '.') {
return NO;
}
// 如果第一位是.则前面加上0.
if ((textField.text.length == 0) && (single == '.')) {
textField.text = @"0";
}
// 如果第一位是0则后面必须输入点,否则不能输入。
if ([textField.text hasPrefix:@"0"]) {
if (textField.text.length > 1) {
NSString *secondStr = [textField.text substringWithRange:NSMakeRange(1, 1)];
if (![secondStr isEqualToString:@"."]) {
return NO;
}
}else{
if (![string isEqualToString:@"."]) {
return NO;
}
}
}
// 小数点后最多能输入两位
if (self.isHaveDian) {
NSRange ran = [textField.text rangeOfString:@"."];
// 由于range.location是NSUInteger类型的,所以这里不能通过(range.location - ran.location)>2来判断
if (range.location > ran.location) {
if ([textField.text pathExtension].length > 5) {
return NO;
}
}
}
}
return YES;
}
UITextField 输入金额,小数点的控制输入的更多相关文章
- jquery限制文本框只能输入金额
$("#batch_diff_percent").keyup(function () { var reg = $(this).val().match(/\d+\.?\d{0,2}/ ...
- iOS textField输入金额的限制,小数点前9位,后面两位
iOS textField输入金额的限制,小数点前9位,后面两位,如果不加小数点,最大位数是9位,加上小数点,最大位数是12位,超出最大位数可删除 - (BOOL)textField:(UITextF ...
- UITextField 的限制输入金额(可为小数的正确金额)
要判断输入金额为正确金额的方法有两个,一个是用正则表达式,另一个就是用textfield的代理方法 有时候难免遇到这样的需求,不符合规则的金额就不让输入时,那用这种方法比较合理 如果设置输入键盘为De ...
- UITextField 对输入金额的约束
[2016/1/18更新] -- 五个人辛辛苦苦干了一年的项目终于上线了,今天有空看了一下正则表达式教程,然后开始rebuild之前的种种对字符串的约束,首先就从这个金额输入框开始吧,修改后的代码如下 ...
- TextFiled 中输入金额
要求: 输入的金额不能超过六位, 小数点后面只能输入两位小数 如果 textFIled 中第一位输入的是0 ,后面必须输入小数点,否则禁止输入 用到 textfiled代理方法 #pragma ma ...
- input框输入金额显示千分位
比如输入:1000000,则显示为1,000,000(或者是保留3位小数:1,000,000.000) 知识点: 1)JavaScript parseFloat() 函数: 定义:parseFloat ...
- textbox 控制输入整数,小数
/// <summary> /// keypress事件控制输入 /// </summary> /// <param name="sender"> ...
- 再谈EditText只能输入金额
上次写了一篇EditText只能输入金额的博客,后来发现一个bug,当还未输入数字的情况下输入小数点程序就崩了,我去测了一下支付宝,看看会怎么样,我先输入小数点,程序正常,我再输入数字,可以正常输入, ...
- js正则表达式限制文本框只能输入数字,小数点,英文字母
1.文本框只能输入数字代码(小数点也不能输入)<input onkeyup="this.value=this.value.replace(/\D/g,'')" onafter ...
随机推荐
- C#使用List实现类似RadioButtonGroup的单选功能
首先说说需求,有多种不同类型的UserControl用于以不同的方式显示数据,想通过在另一个view中实现某种点击选中按钮后,在数据显示view中,只让被逻辑关联的UserControl显示(Visi ...
- xmlns 啥意思
参考:https://blog.csdn.net/zhch152/article/details/8191377 前提科普:DTD 文档类型定义(Document Type Definition) 问 ...
- 《DOM Scripting》学习笔记-——第九章 CSS-DOM
本章内容: 一.style属性 二.如何检索样式信息 三.如何改变样式 属性: 包含位置信息:parentNode , nextSibling , previousSibling , childNod ...
- 20175213《Java程序设计》实验二Java面向对象程序设计实验报告
实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装,继承,多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D原则 5.了解设计模式 知识总结 1.伪代码 2.产品代码: ...
- ElasticSearch 使用问题
1.设置空格分词器 PUT /my_index/my_type/_mapping { "my_type": { "_all": { "analyzer ...
- 【CPU微架构设计】分布式多端口(4写2读)寄存器堆设计
寄存器堆(Register File)是微处理的关键部件之一.寄存器堆往往具有多个读写端口,其中写端口往往与多个处理单元相对应.传统的方法是使用集中式寄存器堆,即一个集中式寄存器堆匹配N个处理单元.随 ...
- fail-fast和fail-safe的区别
fail-fast(快速失败):多线程情况下,一个线程通过迭代器读取集合中的值时,另一个线程修改了集合,则会抛出ConcurrentModificationException异常: 集合中通过modC ...
- mysql与cmd,中文乱码
图中第一次select, 通过navicat插入表中的, 下面的这次select结果,是直接在命令行中插入的,中文就显示了两个问号...搞不懂咋回事..我是win10家庭版系统.....希望各位道友谨 ...
- Linux 学习笔记 4:Shell 编程
1.简单过滤器 a. pr [OPTION] [FILE] 功能:改变文件打印格式 选项 功能 -l n 设定页面长度为n行 -w n 设定页面总宽度为n个字符(不够会被砍掉) -h str 设定页眉 ...
- 通过url获取bitmap
//通过Uri获取BitMap public static Bitmap getBitmapFromUri(Uri uri,Context context) { Bitmap bitmap = nul ...