在输入和文本区域之间切换,但前提是文本很长
Toggle between input and textarea, but only if the text is long
我的目标是每当用户点击输入并且其内容长度大于20时,显示文本区域,否则我将继续显示正常的输出。
我不知道我的逻辑中缺少了什么,但现在我得到了一个不同的行为。
如果用户第一次在带有长文本的输入中单击,则会显示文本区域,当模糊发生时,会再次变为正常的输入 问题是当用户第一次点击短内容,第二次点击长内容入都变成文本区域。只有长内容才应成为文本区域。 我的逻辑中缺少什么 查看 更新: 我想现在我差不多到了。 查看 现在,我正在尝试处理美元指数,但它还没有起作用。如果你意识到我包含了一个带有重复的TR。现在显示这条线是有意义的,因为我正在尝试处理索引。 我认为到目前为止,这种方法的问题是,$指数值每次都重复相同的值,例如:TD(0),TD(1),第二行TD(0、1)。我没有唯一的身份。即使我使用$parent$索引我也会遇到同样的问题。 在这种情况下,我如何使该索引成为唯一标识?var longContentChecked = null;
scope.isLongContent = function(l){
return l && longContentChecked
};
scope.adaptLongContent = function(e){
var textarea = $(e.target).next();
if (textarea.val().length > 20) {
longContentChecked = true;
}else{
longContentChecked = false;
}
textarea.previous().focus();
textarea.focus();
};
<td ng-if="gridLoadColumn($index)" ng-repeat="item in items track by $index">
<input
type="text"
ng-model="item.value"
ng-click="showLongContent = !showLongContent; adaptLongContent($event);"
ng-show="!isLongContent(showLongContent);"
/>
<textarea
class="dgrid-cell-long-content"
ng-blur="!showLongContent"
ng-show="isLongContent(showLongContent);"
ng-model="item.value"
></textarea>
</td>
var longContentChecked = null;
var longContentIndex = null;
scope.isLongContent = function(l, idx){
var ret = (l && longContentChecked) && (longContentIndex == idx);
return ret;
};
scope.adaptLongContent = function(e, idx){
var textarea = $(e.target).next();
if (textarea.val().length > 20) {
longContentChecked = true;
longContentIndex = idx;
//textarea.focus();
}else{
longContentChecked = false;
longContentIndex = null;
}
};
<tr ng-if="gridLoadRow($index)" ng-repeat="items in dataGrid track by $index">
<td><strong>{{$index+1}}</strong></td>
<td ng-if="gridLoadColumn($index)" ng-repeat="item in items track by $index">
<input
type="text"
ng-model="item.value"
ng-click="showLongContent = !showLongContent; adaptLongContent($event, $index);"
ng-show="!isLongContent(showLongContent, $index);"
/>
<textarea
class="dgrid-cell-long-content"
ng-blur="!showLongContent; test();"
ng-show="isLongContent(showLongContent, $index);"
ng-model="item.value"
></textarea>
</td>
</tr>
试试这样的东西?
<td ng-if="gridLoadColumn($index)" ng-repeat="item in items track by $index">
<input
type="text"
ng-model="item.value"
ng-click="showLongContent = !showLongContent; adaptLongContent($event);"
ng-if="item.value.length <= 20"
/>
<textarea
class="dgrid-cell-long-content"
ng-blur="!showLongContent"
ng-if="item.value.length > 20"
ng-model="item.value"
></textarea>
</td>
遵循最终结果,运行良好。
var longContentChecked = null;
var longContentIndex = null;
scope.isLongContent = function(idx){
return longContentChecked && (longContentIndex == idx);
};
scope.adaptLongContent = function(e, idx){
var textarea = $(e.target).next();
if (textarea.val().length > 20) {
longContentChecked = true;
longContentIndex = idx;
}else{
longContentChecked = false;
longContentIndex = null;
}
};
查看
<tbody>
<tr ng-if="lazyLoadRow($index)" ng-repeat="items in dataGrid track by $index" ng-init="counter = $index">
<td><strong>{{$index+1}}</strong></td>
<td ng-if="lazyLoadColoumn($index)" ng-repeat="item in items track by $index" ng-init="iteration = (counter * items.length + $index)">
<input
type="text"
ng-model="item.value"
ng-click="adaptLongContent($event, iteration);"
ng-show="!isLongContent(iteration);"
/>
<textarea
class="dgrid-cell-long-content"
ng-show="isLongContent(iteration);"
ng-model="item.value"
></textarea>
</td>
</tr>
</tbody>
- 如何使用jquery在填充自动完成的值后使文本框只读
- 使用Clipboard.js复制span文本
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 用程序搜索JQuery数据表中的文本
- jQuery匹配JSON对象的部分文本
- onkeyup无法动态创建多个文本区域
- 如何在下面的ES6循环中获得前面的文本
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- 借助asp.net验证或java脚本对多个文本进行验证
- 无法在ajaxStart中更改跨度文本
- 高亮显示时编辑文本大小和颜色
- jquery中的文本框验证
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- Sails.js:同时发布文本输入和一个文件
- 当鼠标悬停在文本中的单词上时显示警报
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 将纯文本URL转换为可单击链接
- 在输入和文本区域之间切换,但前提是文本很长
- 使用Javascript或CSS,如何在文本块的末尾添加额外的空间,但前提是它不是在新行开始