22

模型:

[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>

如果满足某些条件,我想删除所需的属性。无法以这种方式执行此操作。我该如何实现?

4

8 回答 8

49

JavaScript 区分大小写。

利用

document.getElementById("city").required = false;

示范

请注意,当您尝试在元素存在之前访问该元素时,您的代码将无法工作。如果您不在事件上执行代码,请将您的脚本放在元素之后:

<input type="text" id="city" required>
<script>
if(somecondition is true){
    document.getElementById("city").required = false;
}
</script>

另请注意,您不能在提交函数中更改它并期望您的表单被提交,因为为时已晚:如果未填写必填字段,则不会调用此事件处理程序!

于 2013-08-07T19:17:31.650 回答
13

您可以使用:

document.getElementById("city").removeAttribute("required");

或使用 jQuery

$('#city').removeAttr('required')
于 2013-08-07T19:20:13.073 回答
5

你应该这样做:

if(somecondition is true)
{
  var city = document.getElementById("city");
  city.removeAttribute('required');
}
于 2013-08-07T19:19:56.483 回答
1

On Submit函数要删除所需的属性时,表单已经通过了验证。这些步骤是首先您必须禁用验证,然后您才能提交必填字段为空的表单。接下来删除所需的属性,最后通过手动调用验证$.validator.unubtrusive.parse(form),这将通过调用其他验证类型来验证表单,例如string lengthand formatting,除所需属性之外的所有其他内容。检查if form.valid() then submit() else什么都不做。

于 2015-07-26T04:32:08.830 回答
1

在 php 中它非常简单,这不会在提交时验证您的表单,

<input type="submit" onclick="return confirm('Are you sure?')" value="Abort Test" formnovalidate>
于 2017-04-15T14:05:43.370 回答
0

如果您将文本字段放在表单中,则可以使用名为novalidate的特殊属性覆盖必填字段。这是语法:<form novalidate> .. </form>

这是一个例子:

<form novalidate>
  Zip code: <input type="text" name="zipcode" pattern="[0-9]{5}" required><br/>

  <input type="submit">
</form>

novalidate 属性这里是两个使用novalidate属性的现场演示的链接。

于 2019-02-01T06:08:23.113 回答
0

不确定是否有人找到了更好的方法来做到这一点,它可能不是最有效的方法,但你可以使用 PHP 来完成。如果在页面加载之前知道您要满足的条件,那么您可以这样做:

<input type="text" id="city" 

<?php
     if (condition_is_met) {
          echo ">";
     } else {
          echo "required>";
     }
?>
于 2017-04-29T15:13:42.750 回答
0

或者在提交表单的那一刻,如果它为空,您可以禁用它:

if($("#City").val().trim().length == 0) $("#City").attr("disabled", true);

于 2019-07-22T10:55:11.847 回答