单选按钮上的无提示验证被忽略,而它只适用于相同表单html中的文本字段
Unobtrusive validation on radio buttons is ignored while it works fine for text fields in same form html only
我正在测试一个具有Unobtrusive验证的表单,它背后没有MVC控制器,html是手工编写的,仅用于测试(找出为什么它不起作用),而不用于生产。
当表单被提交时,单选按钮不会发生任何事情(并没有错误消息,就像并没有任何验证一样),而同一表单中的文本字段会给出正确的验证错误。
我已经扔掉了我能想到的任何东西,这个例子只需要验证器单选按钮和错误消息跨度,什么都没有,它仍然不起作用。
我一定错过了一些显而易见的东西,当有人指出我的错误时,我可能会觉得自己像个白痴,但我不能在这上面花更多的时间。
<form>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.14.0/jquery.validate.min.js"></script>
<script src="https://ajax.aspnetcdn.com/ajax/mvc/5.0/jquery.validate.unobtrusive.min.js"></script>
<div class="quote-form__question fl--title">
<div class="split-input--left">
<input class="tooltip form-control input " data-val="true" data-val-length="Please enter a firstname with no more than 20 characters" data-val-length-max="20" data-val-regex="Please enter First name with letters only" data-val-regex-pattern="^ *?[a-zA-Z]+[ a-zA-Z-_']*$"
data-val-required="Please enter your first name" id="CustomerFirstname" maxlength="20" name="CustomerFirstname" placeholder="Name" tabindex="" type="text" value="">
<div class="field-validation-error-container">
<span class="field-validation-valid field-validation-error" data-valmsg-for="CustomerFirstname" data-valmsg-replace="true"></span>
</div>
</div>
</div>
<div class="label-row-full-width">
<label for="q1-1" class="label--un-checked">
<span>Mr</span>
<input type="radio" class="js-check-style js-toggle-question js-show-button" data-val-required="Please select title" name="CustomerTitle" id="q1-1" data-val="Mr" value="Mr">
</label>
<label for="q1-2" class="label--un-checked">
<span>Mrs</span>
<input type="radio" class="js-check-style js-toggle-question js-show-button" data-val-required="Please select title" name="CustomerTitle" id="q1-2" data-val="Mrs" value="Mrs">
</label>
<label for="q1-3" class="label--un-checked">
<span>Miss</span>
<input type="radio" class="js-check-style js-toggle-question js-show-button" data-val-required="Please select title" name="CustomerTitle" id="q1-3" data-val="Miss" value="Miss">
</label>
<label for="q1-4" class="label--un-checked">
<span>Ms</span>
<input type="radio" class="js-check-style js-toggle-question js-show-button" data-val-required="Please select title" name="CustomerTitle" id="q1-4" data-val="Ms" value="Ms">
</label>
<span class="field-validation-valid" data-valmsg-for="CustomerTitle" data-valmsg-replace="true"></span>
</div>
<input type="submit" value="submit" />
</div>
</form>
我错过了什么
经过一些调查。
我必须做的是在后端引入自定义验证器属性(我认为这超出了问题的范围,但值得链接)
这就是它归结为仅前端解决方案的原因。
-
单选按钮属性
data-val-required
更改为data-val-something
-
jquery和验证脚本加载后,注册适配器
<script type="text/javascript" language="javascript"> $.validator.unobtrusive.adapters.addBool("something", "required"); </script>
以下是工作示例:
<form>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.14.0/jquery.validate.min.js"></script>
<script src="https://ajax.aspnetcdn.com/ajax/mvc/5.0/jquery.validate.unobtrusive.min.js"></script>
<script type="text/javascript" language="javascript">
$.validator.unobtrusive.adapters.addBool("mandatory", "required");
</script>
<div class="label-row-full-width">
<label for="q1-1" class="label--un-checked">
<span>Mr</span>
<input type="radio" class="js-check-style js-toggle-question js-show-button valid" data-val-mandatory="Please select title" name="CustomerTitle" id="q1-1" data-val="true" value="Mr">
</label>
<label for="q1-2" class="label--un-checked">
<span>Mrs</span>
<input type="radio" class="js-check-style js-toggle-question js-show-button valid" data-val-mandatory="Please select title" name="CustomerTitle" id="q1-2" data-val="true" value="Mrs">
</label>
<label for="q1-3" class="label--checked">
<span>Miss</span>
<input type="radio" class="js-check-style js-toggle-question js-show-button valid" data-val-mandatory="Please select title" name="CustomerTitle" id="q1-3" data-val="true" value="Miss">
</label>
<label for="q1-4" class="label--un-checked">
<span>Ms</span>
<input type="radio" class="js-check-style js-toggle-question js-show-button valid" data-val-mandatory="Please select title" name="CustomerTitle" id="q1-4" data-val="true" value="Ms">
</label>
<span class="field-validation-valid" data-valmsg-for="CustomerTitle" data-valmsg-replace="true"></span>
</div>
<input type="submit" value="submit" />
</form>
希望这能帮你节省一些时间。
相关文章:
- 我未保存的更改指令需要适用于具有不同名称的所有表单
- jQuery表单验证(如果==“执行此操作”)仅适用于第一次输入
- PHP表单适用于索引,但不适用于联系我们页面
- 制作表单's onsubmit仅适用于特定提交
- JQuery验证仅适用于提交的表单中的第一个元素.[打算验证所有内容]
- jQuery表单验证只适用于一次发布
- 我的加载更多功能适用于按钮单击,但它不适用于滚动
- 无法通过 Ajax 将 CSS 应用于表单输入
- 如何将 IF 语句应用于表单的<选择>关系
- 如何创建具有两种状态的按钮切换,其行为类似于表单输入的复选框
- jQuery mousenter适用于表数据,但不适用于整个表行
- 如何使此代码适用于每次单击
- ASP MVC jQuery验证专注于工作,但不专注于表单提交
- body标记末尾的脚本标记是否可以作用于表单
- 更改只适用于表中的第一行
- 自动对焦于表单中的第一个空字段
- Jquery - info/docs关于适用于表单中不同类型输入元素的属性列表
- 使链接目标依赖于表单值
- 如何使图像的行为类似于表单中的复选框
- JavaScript到jQuery的代码转换,该代码适用于带有单选按钮的文本字段的动态外观和消失