【发布时间】:2015-03-19 05:54:05
【问题描述】:
我正在使用Jquery Validation 插件来验证我的远程加载的局部视图表单模态。
var formDataSource = $('#frmDataSource').validate({
rules: {
provider: { required: true },
stype: { required: true },
url: { required: true },
uname: { required: true, digits: true },
pword: { required: true }
},
messages: {
provider: { required: 'Please enter provider name' },
stype: { required: 'Please select type' },
url: { required: 'Please enter url' },
uname: { required: 'Please enter user name' },
pword: { required: 'Please enter password' }
},
errorPlacement: function(error, element) {
error.insertAfter(element.parent());
},
submitHandler: function (form) {
//submit form
}
});
我的部分观点
<div class="modal-body no-padding">
@using (Html.BeginForm("AddProvider", "DataSource", FormMethod.Post, new { id = "frmDataSource", @class = "smart-form" }))
{
<fieldset>
<div class="row">
<section class="col col-5">
<label class="select">
<i class="icon-append fa fa-question-circle"></i>
@Html.DropDownList("providers", ViewBag.ProviderSelectList as List<SelectListItem>, new { name = "provider", placeholder = "Provider Name" })
<i></i>
</label>
</section>
<section class="col col-3 col-lg-offset-3">
<label class="toggle">
@Html.CheckBoxFor(d => d.IsActive, new { name = "chkbxactive" })
<i data-swchon-text="ON" data-swchoff-text="OFF"></i>Active
</label>
</section>
</div>
<div class="row">
<section class="col col-5">
<label class="select">
<select name="stype" class="input-sm" required="">
<option value="1">FTP</option>
</select> <i></i>
</label>
</section>
<section class="col col-5">
<label class="input">
<i class="icon-append fa fa-question-circle"></i>
@Html.TextBoxFor(d => d.Address, new { name = "url", placeholder = "URI" })
<b class="tooltip tooltip-bottom-right"><i class="fa fa-warning txt-color-teal"></i> URI</b>
</label>
</section>
</div>
<div class="row">
<section class="col col-5">
<label class="input">
<i class="icon-append fa fa-question-circle"></i>
@Html.TextBoxFor(d => d.UserName, new { name = "uname", placeholder = "Username" })
<b class="tooltip tooltip-bottom-right"><i class="fa fa-warning txt-color-teal"></i> Username</b>
</label>
</section>
<section class="col col-5">
<label class="input">
<i class="icon-append fa fa-question-circle"></i>
@Html.TextBoxFor(d => d.Password, new { name = "pword", placeholder = "Password", type = "password" })
<b class="tooltip tooltip-bottom-right"> <i class="fa fa-warning txt-color-teal"></i> Password</b>
</label>
</section>
</div>
</fieldset>
<footer>
<button type="button" class="btn btn-default" data-dismiss="modal">
Cancel
</button>
<button id="btn-frmsubmit" type="submit" class="btn btn-info">
Save
</button>
</footer>
}
</div>
上面的代码没有验证和提交然后我尝试了这个
$(document).on('submit', '#frmDataSource', function(e) {
e.preventDefault();
var validator = $("#frmDataSource").validate({
rules: {
provider: { required: true },
stype: { required: true },
url: { required: true },
uname: { required: true, digits: true },
pword: { required: true }
},
messages: {
provider: { required: 'Please enter provider name' },
stype: { required: 'Please select type' },
url: { required: 'Please enter url' },
uname: { required: 'Please enter user name' },
pword: { required: 'Please enter password' }
},
errorPlacement: function(error, element) {
error.insertAfter(element.parent());
}
});
})
表单仍然没有提交我的代码有什么问题? 远程加载时如何提交表单?
编辑
根据要求Sparky
只是验证不起作用,因为验证规则不起作用
申请。没有控制台错误,因为它不是错误。它不是 应用验证规则。
问候
【问题讨论】:
-
“不提交”是什么意思?验证是否有效?您是否看到任何控制台错误?页面是否刷新但数据未发送?还有什么?另外,只向我们展示 rendered 表单的 HTML 标记,而不是视图的 ASP 代码。
-
您永远不会将
.validate()方法放在submit处理程序中。.validate()方法仅用于initializing插件并进入DOM 就绪事件处理程序,在该处理程序中被调用一次。此外,如果您的 ASP 项目正在使用unobtrusive-validation插件,那么您必须将其删除,因为它不允许您直接使用 jQuery Validate 插件的.validate()方法。 -
嗨 sparky 我想出了替代解决方案。我将在下面发布答案。
标签: jquery asp.net-mvc jquery-validate partial-views