如何验证金额文本值
how to validate amount text value
我遇到了一个小问题,即如何验证 uitextfiled 中的金额值。我有一个数量限制文本提交应该大于 Rs.10 和值之间的范围是 Rs.99999。如果用户输入无效金额,如 Rs.01、02、04、09,应避免使用此类数字
我刚刚完成了调用我的函数的简单方法:
if ([amount.text length]>=2 && [amount.text length]<=5) {
}else{
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"error" message:@"Plz enter the amout Min 10Rs" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
return;
}
请看下面的代码:
if ([amount.text doubleValue]>=10 && [amount.text doubleValue]<99999){
}
else{
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"error" message:@"Plz enter the amout Min 10Rs" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
return;
}
您真的应该使用 NSNumberFormatter
进行解析。如果输入已损坏,它是高度可配置的并且很容易说出来。除此之外它还有一个 minimum
和 maximum
属性.
int val = amount.text.integerValue
if (val > 10 && val < 99999){
}
else{
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"error" message:@"Plz enter the amout Min 10Rs" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
}
你应该使用:
- (BOOL)textField:(UITextField *)textField
shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string
在这里您可以完全控制文本字段中显示的内容。由于方法 returns 一个 BOOL
值,如果它满足您的要求,您可以接受替换字符串(通过返回 YES
)或通过返回 NO
.[= 保留旧文本18=]
为了调用此方法,请不要忘记将委托分配给 UITextField
。
编辑:
可能的解决方案:
如果文本框只能输入数字字符,您应该将键盘类型设置为:
textfield.keyboardType = UIKeyboardTypeNumberPad;
在上述方法的实现中可以这样写:
NSInteger value = [textField.text stringByReplacingCharactersInRange:range withString:string].integerValue;
if (value >=10 && value <= 99999){
return YES;
}else{
// inform the user the input is invalid
return NO;
}
使用以下代码限制用户输入单号和6位号
注意:使用KeyboardType作为UIKeyboardTypeNumberPad
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField.text.length >= 5 && range.length < 2)
{
return NO; //Not allowing the user to enter single character or greater than 5 characters
}
else
{
return YES;
}
}
希望对您有所帮助...!
我遇到了一个小问题,即如何验证 uitextfiled 中的金额值。我有一个数量限制文本提交应该大于 Rs.10 和值之间的范围是 Rs.99999。如果用户输入无效金额,如 Rs.01、02、04、09,应避免使用此类数字
我刚刚完成了调用我的函数的简单方法:
if ([amount.text length]>=2 && [amount.text length]<=5) {
}else{
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"error" message:@"Plz enter the amout Min 10Rs" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
return;
}
请看下面的代码:
if ([amount.text doubleValue]>=10 && [amount.text doubleValue]<99999){
}
else{
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"error" message:@"Plz enter the amout Min 10Rs" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
return;
}
您真的应该使用 NSNumberFormatter
进行解析。如果输入已损坏,它是高度可配置的并且很容易说出来。除此之外它还有一个 minimum
和 maximum
属性.
int val = amount.text.integerValue
if (val > 10 && val < 99999){
}
else{
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"error" message:@"Plz enter the amout Min 10Rs" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
}
你应该使用:
- (BOOL)textField:(UITextField *)textField
shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string
在这里您可以完全控制文本字段中显示的内容。由于方法 returns 一个 BOOL
值,如果它满足您的要求,您可以接受替换字符串(通过返回 YES
)或通过返回 NO
.[= 保留旧文本18=]
为了调用此方法,请不要忘记将委托分配给 UITextField
。
编辑:
可能的解决方案:
如果文本框只能输入数字字符,您应该将键盘类型设置为:
textfield.keyboardType = UIKeyboardTypeNumberPad;
在上述方法的实现中可以这样写:
NSInteger value = [textField.text stringByReplacingCharactersInRange:range withString:string].integerValue; if (value >=10 && value <= 99999){ return YES; }else{ // inform the user the input is invalid return NO; }
使用以下代码限制用户输入单号和6位号
注意:使用KeyboardType作为UIKeyboardTypeNumberPad
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField.text.length >= 5 && range.length < 2)
{
return NO; //Not allowing the user to enter single character or greater than 5 characters
}
else
{
return YES;
}
}
希望对您有所帮助...!