jquery - 启用对隐藏元素的验证

标签 jquery asp.net-mvc validation

您好,我想验证 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/

相关文章:

javascript - jQuery 单击 ul 的内部并获取它的属性

javascript - 如何格式化日期以获得日期和月份的名称?

javascript - 添加到购物车时隐藏产品,点击 woocommerce

c# - 在动态创建 PDF 之前显示加载屏幕

java - 如果邮政编码模式动态变化,如何在java中验证邮政编码?

Django 中的 Javascript 驱动表单

javascript - 试图防止页面上的重复项

jquery - 传递给 J 查询 token 输入的附加参数

javascript - 为什么不在 MVC 应用程序中的所有操作上使用异步?

java/jersey/jackson - 验证输入 JSON