型号:
[Display(Name = "City"]
[Required]
[RegularExpression(@"^(?!\d$).*$"]
[StringLength(20,MinimumLength = 2]
public string City { get; set; }
表格:
@Html.LabelFor(x => x.City, new { @class = "control-label" })
@Html.TextBoxFor(x => x.City, new {id="city" })
脚本:
<script>
$(document).ready(function () {
$("#identificationForm").submit(function (e) {
var required=document.getElementById("city").required;
console.log(required);
// e.preventDefault();
});
});
</script>
我想删除所需的属性,如果一些条件得到满足。无法这样做。我该如何实现这一点?
9条答案
按热度按时间eh57zj3b1#
JavaScript区分大小写。
用途
Demonstration
请注意,当您试图在元素存在之前访问它时,代码可能无法正常工作。如果您不对事件执行代码,请将脚本放在元素之后:
还需要注意的是,你不能在提交函数中改变这一点并期望你的表单被提交,因为已经太晚了:这个事件处理程序将不会被调用如果这必需的域是不填充!
3vpjnl9f2#
您可以使用:
或者使用jQuery
6yt4nkrj3#
你应该这样做:
5w9g7ksd4#
在
On Submit
函数要删除所需属性时,该表单可能已经通过了验证。2步骤是首先你必须禁用验证,然后你才能提交必填字段为空的表单。接下来删除必需的属性,最后通过$.validator.unubtrusive.parse(form)
手动调用验证,现在将通过调用其他验证类型来验证表单,例如string length
和formatting
,除必需属性外的所有属性。选中if form.valid() then submit() else
不执行任何操作。vsikbqxv5#
在php中这很简单,在提交时不会验证你的表单。
zzlelutf6#
不知道是否有人找到了更好的方法来做这件事,这可能不是最有效的方法,但你可以使用PHP来完成这件事。如果你要满足的条件是已知的页面加载之前,那么你可以有这样的:
093gszye7#
如果将文本字段放入表单中,则可以使用名为***novalidate***的特殊属性覆盖必填字段。语法如下:
<form novalidate> .. </form>
下面是一个例子:
The novalidate Attribute以下是使用***novalidate***属性的两个实时演示的链接。
quhf5bfb8#
或者在表单提交时,如果它为null,您可以禁用它:
if($("#City").val().trim().length == 0) $("#City").attr("disabled", true);
rsl1atfo9#
这对我来说适用于数据注解。使用“rules”函数。
并增加:
更新:这将修复前端验证,但后端验证仍然失败。为了使ModelState有效,我更改了该输入的ValidationState。
我也会检查以确保这是唯一的错误: