当前位置: 首页 > 面试题库 >

AngularJS-单击复选框时使输入元素聚焦

姚煜
2023-03-14
问题内容

单击复选框时,是否有一种更干净的方法将焦点委派给元素。这是我入侵的肮脏版本:

的HTML

<div ng-controller="MyCtrl">
    <input type="checkbox" ng-change="toggled()">
    <input id="name">
</div>

的JavaScript

var myApp = angular.module('myApp',[]);

function MyCtrl($scope, $timeout) {
    $scope.value = "Something";
    $scope.toggled = function() {
        console.debug('toggled');
        $timeout(function() {
            $('#name').focus();
        }, 100);
    }
}

JSFiddle:http :
//jsfiddle.net/U4jvE/8/


问题答案:

这个怎么样 ?矮人

 $scope.$watch('isChecked', function(newV){
      newV && $('#name').focus();
    },true);

@asgoth和@Mark Rajcok是正确的。我们应该使用指令。我只是懒惰。

这是指令版本。plunker我觉得一个好的理由将其作为指令是可以重用这件事。

因此,在您的html中,您可以将不同的模式分配给不同的集合

<input type="checkbox" ng-model="isCheckedN">
<input xng-focus='isCheckedN'>


directive('xngFocus', function() {
    return function(scope, element, attrs) {
       scope.$watch(attrs.xngFocus, 
         function (newValue) { 
            newValue && element.focus();
         },true);
      };    
});


 类似资料:
  • 我试图检查元素,但从来没有点击过 这是真的,但什么也没发生 附录1.11.1 appium java客户端7.0.0 selenium java 3.141.59 我使用这个podhttps://cocoapods.org/pods/M13Checkbox显示复选框 如果我点击点击在右边的面板它的工作作为预期。 编辑:我必须在填写用户/密码后点击它,我不能在密码后隐藏键盘(它是数字键盘),但它的工

  • 我有一个问题,我的输入类型复选框在控制台中列出:一个无效的表单控件的名称='gdpr'是不可聚焦的。怎么修? 代码: null null

  • 当我第一次点击它的时候,它点击了,但是没有关掉... 我试过这个,它检查和取消检查,但只有一次。 这个对我也不起作用。 null null

  • 问题内容: 我在购物车上工作,人们需要在同一页面上填写2个类似的表格。第一个表格是帐单地址,第二个表格是收货地址。两种形式都包含相似的输入元素,例如: a)帐单邮寄地址:姓名,地址行1,地址行2,国家/地区,电话等。 b)送货地址:姓名,地址行1,地址行2,国家/地区,电话等。 有一个复选框,上面写着“检查账单地址和送货地址是否相同”。因此, 即使仅选中此复选框, 我也需要将数据从帐单地址复制到送

  • 函数如下所示: 这里的重点是在任何时候都必须有一个主要项目。但是,当我选择主项并取消选中它时,函数工作得很好,保持,但是复选框仍然未选中。 我读了这篇文章和更多的文章,但没有找到一些看起来像我的案子的东西,也没有找到答案的线索。正如我对双向数据绑定的理解,当我单击复选框时,它将我的的值更改为false。但随后调用并将其设置为true。为什么复选框没有被选中?

  • 我有以下html文本: 我试图点击复选框,其中数据111在同一行中。 我正在尝试这样做: 页FindChildByXPath(//span[contains(text(),'111')]/parent::td/previous sibling::td/input[@name='caller\u incrollment\u form:enrollmentParticipantSelectionTab