根据验证结果切换元素可见性
Toggle element visibility based on validation results
给定以下HTML
<form class="form-horizontal"
asp-controller="Installation"
asp-action="CreateUser"
method="post">
<fieldset>
<!-- Form Name -->
<legend>Account Creation</legend>
<!-- Username input-->
<div class="form-group">
<label class="col-md-4 control-label" for="userName">Username</label>
<div class="col-md-4">
<input id="UserName" name="UserName" asp-for="UserName" type="text" placeholder="Username" class="form-control input-md" required="">
<span id="usernameTip" class="help-block hidden">Enter a unique Username</span>
<span class="has-error" asp-validation-for="UserName"></span>
</div>
</div>
<!-- Email input-->
<div class="form-group">
<label class="col-md-4 control-label" for="email">E-mail</label>
<div class="col-md-4">
<input id="email"
name="email"
type="text"
placeholder="jane@doe.com"
class="form-control input-md"
required=""
asp-for="Email">
<span class="help-block">Enter your e-mail address</span>
</div>
</div>
<!-- Password input-->
<div class="form-group">
<label class="col-md-4 control-label" for="password">Password</label>
<div class="col-md-4">
<input id="password"
name="password"
type="password"
placeholder="password"
class="form-control input-md"
required=""
asp-for="Password">
<span class="help-block">Enter a password that is at least 8 characters, fewer than 30</span>
</div>
</div>
<!-- Password input-->
<div class="form-group">
<label class="col-md-4 control-label" for="confirmPassword">Confirm Password</label>
<div class="col-md-4">
<input id="confirmPassword"
name="confirmPassword"
type="password"
placeholder="password"
class="form-control input-md"
required=""
asp-for="PasswordConfirmation">
<span class="help-block">Re-enter your password</span>
</div>
</div>
<!-- Submit -->
<div class="form-group">
<label class="col-md-4 control-label"
for="createAccount"></label>
<div class="col-md-4">
<button id="createAccount" type="submit" name="createAccount" class="btn btn-primary">Create Account</button>
</div>
</div>
</fieldset>
</form>
我想隐藏/显示usernameTip
跨度,当asp-validation-for
跨度包含验证错误时,以及任何其他跨度,当有相邻的asp-validation-for
跨度时,我正在使用作为提示。
阅读这篇文章,我可以得到显示/隐藏跨度所需的JavaScript。我唯一不能弄清楚的是,如果视图实际上知道庄园中的验证错误,如果错误存在,则允许我有条件地隐藏/显示usernameTip
span。
有没有人知道我需要做什么,以便根据我的模型上的数据注释错误切换可见性?
在Chrome中查看时,asp-validation-for
span在编译时变成了这个:
<span class="has-error field-validation-error" data-valmsg-for="UserName" data-valmsg-replace="true">Usernames must be between 2 and 50 characters</span>
编辑
当验证失败时,在末尾添加一个==$0
。
用户名必须在2到50个字符之间== $0
当验证失败时,我没有看到任何类被添加或从span中删除。
编辑2
我用公认的答案得到了这个工作。然而,对于那些在未来,你可以使用MVC的ViewData
属性在视图来确定是否有错误。
<div class="col-md-4">
<input id="UserName" name="UserName" asp-for="UserName" type="text" placeholder="Username" class="form-control input-md" required="">
@if (ViewData.ModelState[nameof(AccountCreationViewModel.UserName)] == null || ViewData.ModelState[nameof(AccountCreationViewModel.UserName)].Errors.Count == 0)
{
<span class="help-block">Enter a unique Username</span>
}
else
{
<span class="label label-danger" role="alert" asp-validation-for="UserName"></span>
}
</div>
<div class="col-md-4">
<input id="UserName" name="UserName" asp-for="UserName" type="text" placeholder="Username" class="form-control input-md" required="">
<span id="usernameTip" class="help-block hidden">Enter a unique Username</span>
<span id="error" class="has-error" asp-validation-for="UserName"></span>
</div>
<script>
if( $("#error").text().length>0){
//show usernameTip
}
</script>
相关文章:
- 将元素的可见性绑定到另一个元素
- 通过单选按钮状态设置HTML元素的可见性
- 如何切换DIV元素的可见性
- 如何切换文档元素的可见性
- 使用 jQuery 切换 2 个元素的可见性
- 是否可以在可见性隐藏元素上对幻灯片进行动画处理
- 使用 jQuery 检查 DOM 元素的继承可见性
- 使用 elementFromPoint() 方法检查元素可见性
- 我无法测试在我的主干视图中渲染的元素的可见性
- 取消设置元素可见性,更改 innerHTML,然后转换回来
- 我应该在隐藏元素之前检查可见性吗?
- 如何正确评估“if”语句的元素可见性不透明度隐藏性
- 如何检查表达式中的元素可见性
- 如何在phantomjs中等待元素可见性
- 使用jQuery设置元素可见性
- 当垃圾邮件与悬停事件时,元素可见性的问题
- 切换元素可见性的Angular指令
- 基于元素可见性显示/隐藏警告
- 基于布尔值在ember-js中切换元素可见性
- 根据验证结果切换元素可见性