我有一些元素(输入,textarea,controlgroup)和表单元素之外的提交按钮......
我可以验证这些元素(客户端)吗?例如,检查它们是否是必需的,如果它们为空则显示消息错误。我可以使用jquery验证插件来做到这一点吗?怎么样?
以下是我的代码示例:
<div id="formContainer">
<div data-role="fieldcontain">
<fieldset data-role="controlgroup">
<legend>User:</legend>
<div id="usersContainer">
<input type="radio" name="radio-choice-1" id="radio-choice-1" value="1" />
<label for="radio-choice-1">User1</label>
<input type="radio" name="radio-choice-1" id="radio-choice-2" value="2" />
<label for="radio-choice-2">User2</label>
</div>
</fieldset>
</div>
<div data-role="fieldcontain" class="ui-hide-label">
<label for="subjectMessage">Subject:</label>
<input type="text" name="subjectMessage" id="subjectMessage" value="" placeholder="Subject" />
</div>
<div data-role="fieldcontain" class="ui-hide-label">
<label for="bodyMessage">Body:</label>
<textarea name="bodyMessage" id="bodyMessage" placeholder="Body" rows="8"></textarea>
</div>
<input id="sendMessageBtn" type="submit" value="Send" />
</div>
<script type="text/javascript">
$(document).one("pageinit", function () {
$("#sendMessageBtn").on("click", function () {
var userId= $('#formContainer').find("#usersContainer :radio:checked").val();
var subject = $('#formContainer').find("#subjectMessage").val();
var body = $('#formContainer').find("#bodyMessage").val();
//send data to the server...
});
});
</script>
答案 0 :(得分:2)
是的,有两种方法。
您不使用服务器端助手生成标记并对整个标记进行了硬编码(如问题所示)。这非常糟糕,但如果您决定使用该方法,则必须将相应的data-*
属性添加到不显眼的验证框架正在使用的输入字段中。完全可以在ASP.NET MVC之外使用不显眼的验证框架,例如在PHP应用程序中,假设您的输入字段包含那些data- *属性。但正如我在上一篇文章中所说:outside an ASp.NET MVC application
这引出了一个问题:Why are you using ASP.NET MVC in this case if you do not take advantage of it?
。所以我建议你抓住这种方法,看看第二种可能性。
您使用服务器端帮助程序生成那些输入字段,例如Html.EditorFor,Html.TextAreaFor,Html.DropDownListFor,......这些帮助程序将负责在一个下生成正确的data-*
属性condition:这些元素在表单中。这不是你的情况,所以你可以通过在视图的顶部添加以下行来欺骗他们,让他们认为他们在一个表单中:
@{
this.ViewContext.FormContext = new FormContext();
}