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

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

如果 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. JavaEE5 Tutorial_JavaBean,JSTL

    <jsp:useBean id="beanName" class="fully_qualified_classname" scope="scop ...

  2. 恒天云 3.0:打造基于OpenStack的私有云新模式

    摘自恒天云官网:http://www.hengtianyun.com/download-show-id-17.html 云计算在当今IT世界中已发展地如火如荼,越来越多的企业利用云计算改造传统的数据中 ...

  3. SDN环境搭建(mininet,OVS,ryu安装及命令)

    1.mininet安装与使用 1.1mininet安装 ubuntu 12.04/14.04/14.10      命令行  sudo apt-get install mininet 1.2 mini ...

  4. linux网络编程笔记——UDP

    目前这部分代码会出现阻塞问题,暂时尚未解决 #include "udp.h" #include <stdio.h> #include <string.h> ...

  5. openstack 整合

  6. 主席树模板(poj2104)

    主席树是可持久化线段树,可以记录线段树的历史版本. 代码中和线段树不同的是,l,r记录的是左右子树编号,因为普通的线段树版本中,左右子树自然就是o<<1和o<<1|1,但是主席 ...

  7. Windows下cmd的替代软件——PowerCmd

    Powercmd 是一款运行在windows下的cmd增强软件(A Better Command Prompt Replacement Tool),当前最新的版本为2.2. 官方提供试用版,貌似没有功 ...

  8. HDU 1875 畅通工程再续 (最小生成树)

    畅通工程再续 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/M Description 相信大家都听说一个"百岛湖&q ...

  9. opencv 矩阵的相似性对比 (图片之间比较)

    测试图片:     code: #include <opencv\cv.h> #include <opencv\highgui.h> #include <opencv\c ...

  10. freemaker自定义分页控件实现

    <link href="${res}/css/pages-jhdb.css" rel="stylesheet" type="text/css&q ...