从表单提交的输入字段中删除必需的属性

时间:2013-08-07 19:16:19

标签: javascript jquery html5 asp.net-mvc-4

型号:

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

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

8 个答案:

答案 0 :(得分:28)

JavaScript区分大小写。

使用

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

Demonstration

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

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

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

答案 1 :(得分:10)

您可以使用:

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

或使用jQuery

$('#city').removeAttr('required')

答案 2 :(得分:4)

你应该这样做:

if(somecondition is true)
{
  var city = document.getElementById("city");
  city.removeAttribute('required');
}

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

<input type="submit" onclick="return confirm('Are you sure?')" value="Abort Test" formnovalidate>

答案 5 :(得分:0)

不确定是否有人已经找到了更好的方法来执行此操作并且它可能不是最有效的方法,但您可以使用PHP来完成此操作。如果您希望在页面加载之前知道要满足的条件,那么您可以这样:

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

<?php
     if (condition_is_met) {
          echo ">";
     } else {
          echo "required>";
     }
?>

答案 6 :(得分:0)

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

这里是一个例子:

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

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

The novalidate Attribute以下是使用 novalidate 属性的两个实时演示的链接。

答案 7 :(得分:0)

或者在提交表单后,如果它为空,则可以将其禁用:

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