如何验证金额文本值

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 进行解析。如果输入已损坏,它是高度可配置的并且很容易说出来。除此之外它还有一个 minimummaximum 属性.

 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

更多信息请查看:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextFieldDelegate_Protocol/#//apple_ref/occ/intfm/UITextFieldDelegate/textField:shouldChangeCharactersInRange:replacementString:

编辑:

可能的解决方案:

  1. 如果文本框只能输入数字字符,您应该将键盘类型设置为:

    textfield.keyboardType = UIKeyboardTypeNumberPad;

  2. 在上述方法的实现中可以这样写:

    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;
    }

}

希望对您有所帮助...!