【问题标题】:Dynamically add specific attr to element将特定的属性动态添加到元素
【发布时间】:2016-09-12 02:21:35
【问题描述】:

我使用 angular 指令创建了valid-file 属性,因为文件输入(带有bootstrap filestyle plugin)看不到required 属性:

    .directive('validFile',function(){
        return {
            require:'ngModel',
            link:function(scope,el,attrs,ngModel){
                //change event is fired when file is selected
                el.bind('change',function(){
                    scope.$apply(function(){
                        ngModel.$setViewValue(el.val());
                        ngModel.$render();
                    })
                })
            }
        }
    })

我需要动态添加或删除valid-file 属性。 如果我使用 $("input").attr("valid-file"); 什么都不会改变。 如果我使用$("input").attr("valid-file",true);,它将添加属性valid-file="true",但验证会中断。 你能给我一些建议吗? 这里是笨蛋http://plnkr.co/edit/Gcbb7r05VBTjbh9x5Ma8?p=preview

【问题讨论】:

  • 在演示中它正在工作
  • 不。我需要 而不是 。我也试过 .prop() 但结果是一样的。
  • 你的结果是一样的。
  • 也尝试使用$compile来添加attr...但没有。

标签: javascript jquery angularjs validation angularjs-directive


【解决方案1】:

.attr()如果要在任何元素中设置任何属性,则需要2个参数。

例如。 $("input").attr("valid-file",""); // 空也可以..或者任何值而不是空

因为只有$("input").attr("valid-file") 用于获取属性“valid-file”的值

所以你需要.attr()中的2个参数来设置任何属性

试试这个:http://plnkr.co/edit/lSl3GdZrRAyFps5QOSlw?p=preview

 $("select").change(function(){
    if ($("select option:selected").val() == "0") {
      $("input").attr("valid-file",""); // try this
    } else {
      $("input").removeAttr("valid-file");
    }
  });

HTML:

<select name="" id="">
  <option value="">Select</option>
  <option value="0">Add attr
  <option value="1">Delete attr
</select>

【讨论】:

  • 谢谢,希望对您有所帮助!
  • 它根据需要添加了 attr,但验证仍然失败:D 我使用 Angular 进行验证,我的 Angular 知识很差:D
  • @kipris ohh..sorry kipris 我不了解 angular..否则我可以帮助你 :)
猜你喜欢
  • 2018-12-25
  • 1970-01-01
  • 2019-06-24
  • 2014-02-17
  • 1970-01-01
  • 2013-09-09
  • 2020-08-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多