javascript - 选择元素中的文本

标签 javascript jquery angularjs angular-directive

我有一个 input 元素,它使用 ng-model 在其中包含文本,然后我尝试通过创建自定义侦探来选择所有文本:

.directive('selectText', function() {
    return {
        require: 'ngModel',
        link: function(scope, elem, attrs, ctrl) {
            elem.bind('focus', function() {
                $(elem).select();
            });
            scope.$watch("edit",function(newValue,oldValue) {
                $(elem).select();
            });
        }
    };
})

它运行良好,但我不希望当用户从控件中 focusout 并再次 focusin 时也选择它的文本。它应该只选择一次文本(而不是第二个焦点)。 另外,当所有文本都被选中时,如何从元素中移除焦点?

最佳答案

您可以创建一个变量,如果元素被选中,该变量将保存 bool 值,并且仅当元素尚未被选中时才选择该元素。像这样:

.directive('selectText', function() {
    return {
        require: 'ngModel',
        link: function(scope, elem, attrs, ctrl) {
            var selected = false;
            elem.bind('focus', function() {
                if (!selected) {
                    $(elem).select();
                    selected = true;
                }
            });
            scope.$watch("edit",function(newValue,oldValue) {
                $(elem).select();
            });
        }
    };
})

关于javascript - 选择元素中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45434308/

相关文章:

Javascript多步表单不进入下一步

java - 如何使用 Spring boot 创建事件源服务器?

javascript - 使用 Javascript 突出显示范围不起作用

javascript - 获取动态输入区jquery中的post数组插入批量codeigniter

javascript - 为什么我的 AJAX 请求返回空?

javascript - 如何在不刷新页面的情况下发送表单中的输入/选择字段(PHP/AJAX/JS)

angularjs - Angular ui bootstrap Accordion "only open one at a time"不起作用

javascript - Angularjs 隐藏 显示 干净的编码

javascript - 使用javascript检查字符串是否是数组中字符串的组合

javascript - 在javascript中生成不同语言的字符串