【问题标题】:Can't type in input type text within <a> tag in Edge Browser?无法在 Edge 浏览器的 <a> 标记中输入输入类型文本?
【发布时间】:2016-07-08 08:19:31
【问题描述】:

脚本语言:AngularJS

我的 HTML 代码是:

<li>
<a href="javascript:void(0)">
<label ng-if="show">MyName</label>
<i class="fa fa-pencil" ng-if="show">
<i class="fa fa-trash" ng-if="show">
<input type="text" ng-hide="show" />
</a>
</li>

上面的 html 可以在除 IE 边缘之外的所有浏览器中运行..

此功能已完成,当我单击列表中的编辑图标时,标签将被删除,文本框将显示标签值..

它就像我将选择或重命名该标签值的任何编辑列表。

此 html 代码在(firefox,google chrome,IE9 以上和 Edge 除外)中运行良好。

【问题讨论】:

  • 为什么要在锚点内放置输入?另外,这里没有angularjs;这只是 HTML。您还可以分享您正在使用的任何相关 Angular 代码吗?最后,您正在使用哪个版本的 Edge 进行测试?我刚刚在最近的版本中测试了jsfiddle.net/39zhw2uf,并且能够输入两个输入元素。
  • 锚标签只能包裹非交互内容,所以没有输入。那是无效的html。 w3.org/TR/html5/text-level-semantics.html#the-a-element

标签: angularjs microsoft-edge


【解决方案1】:

用 html validator 尝试过。

输出是:

错误:元素 input 不得作为 a 的后代出现 元素。

所以基本上这不是一个有效的 HTML,它取决于浏览器解析你的标记的严格程度。因此,您可能希望在代码中使用一些变通方法来获得您想要的相同效果,但不使用那种标记。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-27
    相关资源
    最近更新 更多