在符合 XHTML 1.1 标准的同时使用 AngularJS 引用表单的正确方法?

Proper way to reference a form with AngularJS while conforming to XHTML 1.1 standards?

提问人:Aron Foster 提问时间:4/8/2017 最后编辑:CommunityAron Foster 更新时间:4/8/2017 访问量:97

问:

.NET 正在从我在母版页中定义的元素中删除该属性:nameform

<form
   name="aspnetForm"
   runat="server"
   onsubmit="if (typeof(_spFormOnSubmitWrapper) != 'undefined') {return _spFormOnSubmitWrapper();} else {return true;}"
   ng-model-options="{updateOn: 'default blur','debounce':{'default':250,'blur':0}}">

呈现为:

<form
   method="post"
   action="...the current url..."
   onsubmit="javascript:return WebForm_OnSubmit();"
   id="aspnetForm"
   ng-model-options="{updateOn:'default blur','debounce':{'default':250,'blur':0}}"
   class="ng-pristine ng-invalid ng-invalid-required ng-valid-date"> == $0

W3Microsoft 来看,该属性似乎在 XHTML 1.0 中被正式弃用,而在 1.1 中不允许,我们应该改用该属性。但是,AngularJS 使用该属性在当前范围内发布表单。我想使用 AngularJS 检查表单的有效性,但不知道如何了解表单。我已经在我的控制器中尝试了这个建议代码的一些变体,但没有成功。我还尝试将clientidmode设置为static,但这似乎不会影响标签。nameidnameng-disabled="!aspnetForm.$valid"$scopename

AngularJS 表单 XHTML

评论

2赞 Danny Fardy Jhonston Bermúdez 4/8/2017
我记得九年前用 XHTML 1.1 开发 Web。但是,在 AngularJS 文档中,它指的是与 HTML5 一起使用。docs.angularjs.org/tutorial/step_00

答:

1赞 Matthew Green 4/8/2017 #1

表单的范围名称也可以使用属性 进行设置。您可以在源代码中看到它设置名称的位置。ng-form='aspnetForm'

评论

0赞 Aron Foster 4/11/2017
现在我收到一个错误,因为我有 ,它有这个问题:stackoverflow.com/a/20893935/2596509。思潮?<form... ng-form='aspnetForm'></form>
0赞 Matthew Green 4/11/2017
任何使用像答案提到的 div 都不起作用的原因吗?
0赞 Aron Foster 4/11/2017
我需要提交功能。<form>
0赞 Aron Foster 4/11/2017
如果我这样做,我会得到一大堆错误,目前“控制......类型为'ScriptManager'的必须放在表单标记中”。我将暂时不接受您的答案,直到我们弄清楚如何让 Angular 识别我的表单标签。<div>
0赞 Matthew Green 4/11/2017
然后你可能到了需要扔掉一些东西的地步。你可以改用 Angular 的表单提交选项,或者使用 HTML5 而不是 XHTML 1.1,或者使用 .NET 表单验证而不是 Angular。至于如何在示波器上获取表格的实际问题,这个答案是正确的,不幸的是,这是我能看到的唯一其他选项,可以为您做到这一点。