当用户输入数据时,它应该实时只替换'#',并且用户应该知道may占位符是如何剩余的。此外,不应替换或删除这些连字符和括号。
当用户删除文本时,它应该再次替换为各自范围内的预定义格式。
我找到的解决方案是使用UITextFieldDelegate。有关文本字段的generic-format的示例项目,请参考给定的git-link https://github.com/imitty8/iostextbox_mandatory_format
它是以一种通用的方式进行的。下面的方法是为text_field创建所需的格式。
-(void)loadFormatForTextView {
openFormat = @"(";
closeFormat = @")";
intermideateFormat = @"-";
charFormat1 = @"#";
//charFormat2 = nil;
//(###)-(#######)
NSArray *formatList = [[NSArray alloc]initWithObjects: openFormat,charFormat1,charFormat1,charFormat1,closeFormat,intermideateFormat,openFormat,charFormat1,charFormat1,charFormat1,charFormat1,charFormat1,charFormat1,charFormat1,closeFormat, nil ];
phoneFormatString = [[NSMutableString alloc]init];
for (NSString *formatString in formatList) {
[phoneFormatString appendString:formatString];
}
inputTest = [phoneFormatString copy];
[_tbPhoneNo setText:phoneFormatString];
}
实现文本字段委托以将预定义格式实现到UITextField中
- (void)textFieldDidBeginEditing:(UITextField *)textField {
NSCharacterSet *charSet = [NSCharacterSet characterSetWithCharactersInString:charFormat1];
NSRange range = [textField.text rangeOfCharacterFromSet:charSet];
if (range.location != NSNotFound)
{
UITextPosition *cusorPosition = [textField positionFromPosition:[textField beginningOfDocument] offset:range.location];
[textField setSelectedTextRange:[textField textRangeFromPosition:cusorPosition toPosition:cusorPosition]];
}
}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (range.location < phoneFormatString.length) {
NSRange replacementRange = range;
replacementRange.length = 1;
NSRange nextStringRange;
nextStringRange.length = 1;
if([string isEqualToString:@""]) //Backspace
{
NSString *deleteString = [textField.text substringWithRange:replacementRange];
if ([deleteString isEqualToString:openFormat] || [deleteString isEqualToString:closeFormat] || [deleteString isEqualToString:intermideateFormat]) {
//
}
else
{
[textField setText:[textField.text stringByReplacingCharactersInRange:replacementRange withString:charFormat1]];
}
nextStringRange.location = range.location;
NSString *nextString;
for (nextString = [textField.text substringWithRange:nextStringRange]; ([nextString isEqualToString:intermideateFormat] || [nextString isEqualToString:openFormat] ) && nextStringRange.location != 0 ; )
{
nextStringRange.location = nextStringRange.location - 1;
nextString = [textField.text substringWithRange:nextStringRange];
}
if (nextStringRange.location != 0) {
UITextPosition *cusorPosition = [textField positionFromPosition:[textField beginningOfDocument] offset:nextStringRange.location];
[textField setSelectedTextRange:[textField textRangeFromPosition:cusorPosition toPosition:cusorPosition]];
}
}
else if ([string isEqualToString:@" "]) //BlankSpace
{
//Do nothing//
}
else //Other
{
[textField setText:[textField.text stringByReplacingCharactersInRange:replacementRange withString:string]];
nextStringRange.location = range.location + 1;
NSString *nextString = [textField.text substringWithRange:nextStringRange];
if ([nextString isEqualToString:openFormat] || [nextString isEqualToString:intermideateFormat] || [nextString isEqualToString:closeFormat]) { //Will redirect to first available blank
NSCharacterSet *charSet = [NSCharacterSet characterSetWithCharactersInString:charFormat1];
NSRange range = [textField.text rangeOfCharacterFromSet:charSet];
if (range.location != NSNotFound)
{
UITextPosition *cusorPosition = [textField positionFromPosition:[textField beginningOfDocument] offset:range.location];
[textField setSelectedTextRange:[textField textRangeFromPosition:cusorPosition toPosition:cusorPosition]];
}
}
else
{
UITextPosition *cusorPosition = [textField positionFromPosition:[textField beginningOfDocument] offset:nextStringRange.location];
[textField setSelectedTextRange:[textField textRangeFromPosition:cusorPosition toPosition:cusorPosition]];
}
}
}
return NO;
}
- (BOOL)textFieldShouldClear:(UITextField *)textField {
[textField setText:phoneFormatString];
NSCharacterSet *charSet = [NSCharacterSet characterSetWithCharactersInString:charFormat1];
NSRange range = [textField.text rangeOfCharacterFromSet:charSet];
if (range.location != NSNotFound)
{
UITextPosition *cusorPosition = [textField positionFromPosition:[textField beginningOfDocument] offset:range.location];
[textField setSelectedTextRange:[textField textRangeFromPosition:cusorPosition toPosition:cusorPosition]];
}
return NO;
}
在使用cssContainingText时,是否有任何方法可以搜索具有精确文本的元素。我使用下面的代码,但下拉列表中有多个值,如下所示。 下面是我正在使用的代码。
我有一个
我正在编写一个函数,它应该接受一个字符串,并单击包含匹配该字符串的文本的html元素。 但是在某些情况下,元素的文本包含特殊字符 ,我的函数无法找到元素。
我需要根据模板生成几个word文档。在每个文档中,都需要替换某些字符串(所有字符串都包含在一组双大括号中,以便轻松区分)。 我试过: **阅读整个模板,并使用正则表达式替换单词的所有出现。替换 **还可以访问每个Text元素 但上述解决方案都不管用,因为在中国。docx文件所有这些花括号都存储在不同的文本元素中(
问题内容: 当我仅具有对该INPUT的引用时,需要获得对该INPUT的FORM父级的引用。JavaScript有可能吗?如果愿意,请使用jQuery。 这不起作用: 问题答案: 作为输入的本机DOM元素还具有指向它们所属形式的属性: IE 4.0+,Firefox 1.0+,Opera9.0+支持输入字段的属性,这是jQuery保证的更多浏览器,因此您应该坚持这一点。 如果这是另一种类型的元素(不
我从数据库获取的值为10.00520.00,但当我绑定到输入时,它显示为10和520 实例 值绑定到文本框为10,但我希望绑定10.00