web-dev-qa-db-ja.com

フォーム送信時に入力フィールドから必須プロパティを削除します

モデル:

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

いくつかの条件が満たされた場合に必要なプロパティを削除したいのですが、この方法でこれを行うことはできません。

12
user2137186

JavaScriptは大文字と小文字を区別します。

使用する

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

デモ

要素が存在する前にアクセスしようとすると、コードが機能しないことに注意してください。イベントでコードを実行しない場合は、要素の後にスクリプトを配置します。

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

また、サブミット関数でこれを変更することはできず、フォームが遅すぎるのでフォームがサブミットされることを期待できないことにも注意してください。

30
Denys Séguret

次を使用できます。

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

またはjQueryを使用

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

これを行う必要があります:

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

PHPでは非常に簡単です。これは送信中にフォームを検証しません。

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

_On Submit_関数が必要な属性を削除するまでに、フォームはすでに検証に合格しています。手順は、最初に検証を無効にする必要があり、その後、必須フィールドを空にしてフォームを送信できます。次に、必要な属性を削除し、最後に$.validator.unubtrusive.parse(form)を介して検証を手動で呼び出します。これにより、_string length_やformattingなどの他の検証タイプを呼び出すことでフォームが検証されます。必須の属性。チェックif form.valid() then submit() elseは何もしません。

1
rasmicah

テキストフィールドをフォームに配置すると、必須フィールドを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属性を使用した2つのライブデモへのリンクです。

0
S. Mayol

誰かがこれを行うためのより良い方法をまだ見つけているかどうかはわかりません、それはそれを行うための最も効率的な方法ではないかもしれませんが、PHPを使用してこれを行うことができます。ページが読み込まれる前に会うことを知っているなら、あなたはこれを持つことができます:

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

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

または、フォームが送信された瞬間に、nullの場合は無効にすることができます。

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

0
Edison Neza