如何将动态添加的控件添加到验证中?
<div class="editor-field">
@*@Html.EditorFor(model => model.Middlename)*@
<div id="x"></div>
<script type="text/javascript">
$(function () {
var newTextBoxDiv = $(document.createElement());
newTextBoxDiv.html('<input type="text" name="Middlename" id="Middlename" width="100" data-val="true" data-val-required="The Middleneim field is required." />');
newTextBoxDiv.appendTo('#x');
});
</script>
@Html.ValidationMessageFor(model => model.Middlename)
</div>
Run Code Online (Sandbox Code Playgroud)
我注意到当我不使用ready函数时,即
<script type="text/javascript">
var newTextBoxDiv = $(document.createElement());
newTextBoxDiv.html('<input type="text" name="Middlename" id="Middlename" width="100" data-val="true" data-val-required="The Middleneim field is required." />');
newTextBoxDiv.appendTo('#x');
</script>
Run Code Online (Sandbox Code Playgroud)
,客户端验证启动.有没有办法明确地将延迟创建的输入包含在验证中?
虽然John Resig的建议非常正确地宣布jquery.document.ready()函数内的所有事件,但我知道你实际上并不需要把所有事情都放在那里.事实上,有些情况下,故意将方法置于就绪事件之外可能更为合适.
但那些案件是什么?显然,最佳实践要求所有事件都在ready事件中声明,那么在该事件之外的声明最佳做法是什么?
编辑
记住,我不仅仅是在不那么明显的东西之后,但我也希望对这些显而易见的部分有一个很好的解释.例如,如果我正在编写插件,我不会在jquery.document.ready()调用中封装该代码.