您好,我想验证 MVC 5 中的隐藏字段值。下面是 View 端代码
@Html.HiddenFor(m => m.DecalLogoFileName, new { id = "hdImageName" })
@Html.ValidationMessageFor(model => model.DecalLogoFileName)
我有许多编辑器控件,其验证正在被触发,但无论如何,此验证控件在提交点击时不会被触发
<img id="DecalLogo" name="DecalLogo" class="photo" ImageUrl="" />
@Html.HiddenFor(m => m.DecalLogoFileName, new { id = "hdImageName" })
@Html.ValidationMessageFor(model => model.DecalLogoFileName)
<label for="imgInp" class="custom-file-upload">
<i class="fa fa-cloud-upload"></i>Upload Logo
</label>
<input type='file' id="imgInp" name="image" />
<script type="text/javascript">
//Preview & Update an image before it is uploaded
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$('#DecalLogo').attr('src', e.target.result);
$('#hdImageName').val(e.target.result);//Here I am filling my Hidden field control
}
reader.readAsDataURL(input.files[0]);
}
}
$("#imgInp").change(function () {
readURL(this);
});
从上面的脚本代码中,我正在填充隐藏字段控件的值,并且我想验证 luike,如果该脚本未触发,则验证应该显示。
如何在 MVC 中验证提交单击时图像是否已上传。
最佳答案
基本上,jQuery validate
会忽略隐藏字段
、display:none
,并且任何具有不可见父级的元素您可以做的是覆盖默认行为申请
$("#yourformid").data("validator").settings.ignore = "";
或
$.validator.setDefaults({ignore: [] });
This should not in
document.ready
上面的代码行将验证您在某些情况下传递的表单中的所有隐藏字段,在某些情况下不太好,您只想验证具有特定类XYZ
的隐藏字段> 然后像下面这样做
$.validator.setDefaults({ignore: ':hidden:not(.XYZ)' });,
上面的代码行设置了一个验证器来忽略所有隐藏字段,但验证类为XYZ
的隐藏字段
更新
验证具有特定类
的字段,即使它是隐藏的。
$(document).ready(function() {
$.validator.setDefaults({
ignore: ":hidden:not('.Validateclass')" // validate all hidden fields with specified class
});
$('form').valid();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.13.1/jquery.validate.js"></script>
<form id="form">
<input class="Validateclass" name="hoge1" type="hidden" data-val-required="The field is required." data-val="true" required />
<span data-valmsg-for="hoge1" data-valmsg-replace="true"></span>
<input name="hoge2" type="hidden" data-val-required="The field is required." data-val="true" required/>
<span data-valmsg-for="hoge2" data-valmsg-replace="true"></span>
<input type="submit" />
</form>
关于jquery - 启用对隐藏元素的验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47639578/