【问题标题】:Hide input-help on form using AngularJS使用 AngularJS 在表单上隐藏输入帮助
【发布时间】:2013-04-17 10:39:43
【问题描述】:

我目前正在学习 AngularJS,我想完成一个简单的任务。 在表单输入中,我想隐藏相应的“输入帮助”,即使输入中输入的数据无效。 我目前这样做的方式调用了一些 jquery。但我正在寻找使用 AngularJS 逻辑的方法。我认为我应该使用指令,但由于我是 Angular 新手,所以我不知道该怎么做。

这是使用 jquery 工作的 jsFiddle 示例代码:JSFIDDLE

这里是 jsFiddle 示例代码不起作用(没有 jquery):JSFIDDLE {为了测试,在密码输入中只输入几个文本并模糊它}

这是我的代码:{jquery}

$(document).on('blur', '.immediate-help', function () {
    $(this).next('.input-help').fadeOut();
}).on('focus', '.immediate-help', function () {
    $(this).next('.input-help').fadeIn();
});

这按预期工作,但我想使用角度指令来做到这一点。当然,我并不反对在 angular 指令中使用 jquery。

所以,要恢复,我想在触发模糊输入时隐藏“输入帮助”,即使文本无效并使用角度指令。

有人能告诉我正确的方法吗?

【问题讨论】:

    标签: javascript jquery angularjs


    【解决方案1】:

    几种方法:

    在指令中使用脚本:

    elm 指令link 中的参数如果 jQuery.js 在页面中的 anugular.js 之前加载,则回调是一个 jQuery 对象......或者如果不包括 jQuery.js,它是一个 jQlite。

    jQlite 有许多最常用的 jQuery 方法,因此您可以使用:

    elm.bind('blur....
    

    有关 jQlite 方法的列表,请参阅 angular.element docs

    使用ng-class

    给表单和控件一个name。这将创建一个对象formName,其属性由字段名称表示。然后,您可以在标记中使用类的角度表达式或 disabled 等属性

    <form name="myForm">
        <input name="passord"/>
        <div ng-class="{ShowMeClassName: myForm.password.$invalid}"> Error content</div>
    </form>
    

    ng-class 将根据名为 myForm 的表单中名为 password 的字段的有效性切换类 ShowMeClassName

    【讨论】:

    • 感谢输入,但我不明白我应该在指令中的哪里绑定 elm blur 事件?
    • jsfiddle.net/wr5bk/2 ... 使用相同的指令进行验证...注意我更改了 angular/jQUery 加载的顺序,因此可以使用 fade 不支持的动画 jQlite
    • 现在可以了(不在你的 jsfiddle 中使用委托)谢谢!
    • 一个重要的技巧,与这种情况无关,但你会遇到它...如果元素正在动态创建并且指令需要进行操作...将代码包装在 $timeout 中。即使延迟为零,它也给角度编译挖掘一个完成的机会
    • 只谈论不能使用委托的操作或代码。 Agin 不适用于这种情况,除非您的表单控件是动态构建的
    【解决方案2】:

    您可以使用Angular-ui

    Angular-UI 提供了一堆指令,可以帮助你。你有 ui-event 指令。

    例如你可以使用

    <input ui-event="{ blur : 'blurCallback()' }">
    ...
    <script>
    $scope.blurCallback = function() {
    alert('Goodbye');
    };
    </script>
    

    【讨论】:

    • 如果我明白了,Angular-ui 是一个“插件”还是默认在 Angular js 源中实现?
    • AngularUI 它是一个“插件”,您必须将其包含在脚本中。
    猜你喜欢
    • 2023-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-15
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多