el-select可以新建条目时 限制输入字数

Posted 安安安安安沅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了el-select可以新建条目时 限制输入字数相关的知识,希望对你有一定的参考价值。

一.el-select新建条目需要设置allow-create和filterable
二.限制字数分为两种三种情况来说明
1.页面中仅有一个el-select

<el-select
    id="inputSubjectId"
    v-model="subject"
    placeholder="请选择"
    filterable
    allow-create
    :filter-method="inputSubjectLimit()"
>
  <el-option
      v-for="item in subjectOption"
      :key="item.name"
      :label="item.name"
      :value="item.name"
  ></el-option>
</el-select>
/* data中定义 */
subject: '',
subjectOption: [
	 name: '哈哈' ,
	 name: '嘻嘻' 
]
/* methods中定义 */
// 新建科目输入限制
inputSubjectLimit() 
    var inputSubjectId = document.querySelector('#inputSubjectId')
    if (inputSubjectId) 
        inputSubjectId.setAttribute('maxLength', 6)
    

2.el-select在动态加载的组件中

<el-select
   :id="`inputTypeId$index`"
    v-model="item.type"
    placeholder="请选择"
    filterable
    allow-create
    :filter-method="$event => inputTypeLimit($event, index)"
>
  <el-option
      v-for="ele in applyOption"
      :key="ele.name"
      :label="ele.name"
      :value="ele.name"
  ></el-option>
</el-select>
// 新建报名类型输入限制
inputTypeLimit(event, index) 
    var inputTypeId = document.querySelector(`#inputTypeId$index`)
    if (inputTypeId) 
        inputTypeId.setAttribute('maxLength', 6)
    

3.在el-table中,而且通过某个操作表格中的数据会新增

<el-table-column
    align="left"
    label="科目"
    fixed
    min-width="120"
>
  <template slot-scope="row">
    <div class="comDefaultSelect courseSelect" @click.stop="">
      <el-select
          :id="`addInputId$row.$index`"
          v-model="row.row.subject"
          placeholder="请选择"
          filterable
          allow-create
          :filter-method="addInputLimit(row.$index)"
      >
        <el-option
            v-for="item in subjectOption"
            :key="item.name"
            :label="item.name"
            :value="item.name"
        ></el-option>
      </el-select>
    </div>
  </template>
</el-table-column>
// 新建科目输入限制
addInputLimit(index) 
     var addInputId = document.querySelector(`#addInputId$index`)
     if (addInputId) 
         addInputId.setAttribute('maxLength', 6)
     
 

以上,第一次加载的表格数据 科目的下拉框输入有限制。但是,如果点击导入,表格中新增的数据的科目下拉框是没有输入限制的,需要强制刷新此页面。
刷新页面的两种常用方法:
①强制刷新(跟按F5类似,用户体验不好)

location.reload()
this.$router.go(0)

②provide / inject声明注入法




以上,各种情况下,el-select可创建条目的输入限制字数的功能均已实现。
在APP.vue中注入provide/reject会影响其他页面的缓存,可以直接在需要重新加载的表格设置一个变量控制显隐。

UITextView输入中文时限制字数

最近因为项目中输入用户简称时限制长度,被测试部多次提交问题,最终将解决方法分享给大家。

刚开始用最简单的方法,在textView的代理方法里面做处理

 1 - (void)textViewDidChange:(UITextView *)textView
 2 {
 3     textCountlabel.text = [NSString stringWithFormat:@"%lu", (unsigned long)30 - textView.text.length];
 4 }
 5 
 6 
 7 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
 8 {
 9     if ([text isEqualToString:@"\n"])
10     {
11         [textView resignFirstResponder];
12         return NO;
13     }
14 
15     if (range.location > 30)
16     {
17         return  NO;
18     }
19     else
20     {
21         return YES;
22     }
23 }

这种情况下需要正好输入限定的长度时才好使,一次性拼音拼出来的字超过固定长度时textView的内容保持不变。

后来又修改成超过限定长度时直接从前到后取需要长度,代码如下:

 1 - (void)textViewDidChange:(UITextView *)textView
 2 {
 3     if (textView.text.length > 30)
 4     {
 5         textView.text = [textView.text substringToIndex:30];
 6         
 7         [[[UIAlertView alloc] initWithTitle:@"提示" message:@"限定长度为30" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil] show];
 8     }
 9     textCountlabel.text = [NSString stringWithFormat:@"%lu", (unsigned long)30 - textView.text.length];
10 }
11 
12 
13 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
14 {
15     if ([text isEqualToString:@"\n"])
16     {
17         [textView resignFirstResponder];
18         return NO;
19     }
20     return YES;
21 }

修改完后自己亲测通过,万万没想到测试部又提交上来了。问题内容大概是剩余两个字的时候拼音拼到一半(实际是输入两个字母)就提示了。根据问题又找到了原因:自己用第三方输入法,输入汉字时直接拼音不会到textView里面,测试部用的是手机系统输入法,拼的时候拼音直接就是textView的内容,这样就导致剩余两个字想输入“测试”,结果到“ces”的时候就提示了,找到原因就可以解决问题了,直接上代码:

 1 #define MAXSTRINGLENGTH 15    //限定输入长度
 2 
 3 
 4 - (void)textViewDidChange:(UITextView *)textView
 5 {
 6     NSString *lang = [[[UITextInputMode activeInputModes] firstObject] primaryLanguage];//当前的输入模式
 7     if ([lang isEqualToString:@"zh-Hans"])
 8     {
 9         UITextRange *range = [textView markedTextRange];
10         UITextPosition *start = range.start;
11         UITextPosition*end = range.end;
12         NSInteger selectLength = [textView offsetFromPosition:start toPosition:end];
13         NSInteger contentLength = textView.text.length - selectLength;
14         
15         if (contentLength > MAXSTRINGLENGTH)
16         {
17             textView.text = [textView.text substringToIndex:MAXSTRINGLENGTH];
18             [[[UIAlertView alloc] initWithTitle:@"提示" message:@"最长限制15个字" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil] show];
19 20         }
21         if (contentLength < MAXSTRINGLENGTH)
22         {
23             textCountlabel.text = [NSString stringWithFormat:@"还剩%ld个字", MAXSTRINGLENGTH - contentLength];
24         }
25         else
26         {
27             textCountlabel.text = @"还剩0个字";
28         }
29     }
30     else
31     {
32         if (textView.text.length > MAXSTRINGLENGTH)
33         {
34             textView.text = [textView.text substringToIndex:MAXSTRINGLENGTH];
35             [[[UIAlertView alloc] initWithTitle:@"提示" message:@"最长限制15个字" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil] show];
36             
37 } 38 textCountlabel.text = [NSString stringWithFormat:@"还剩%ld个字", MAXSTRINGLENGTH-textView.text.length]; 39 } 40 } 41

以上是关于el-select可以新建条目时 限制输入字数的主要内容,如果未能解决你的问题,请参考以下文章

UITextView输入中文时限制字数

JavaScript 实现textarea限制输入字数, 输入框字数实时统计更新,输入框实时字数计算移动端bug解决

el-select 搜索功能 按tab键默认选第一列

vantui输入框字数限制

iOS中UITextField的字数限制

有没有用百度Ueditor的,关于编辑文档字数限制的配置问题?