0

jQueryを使用して入力フィールドが「必須」かどうかを切り替えるために使用しているチェックボックスがあります。これは Foundation Abide 検証の一部です。そのため、入力フィールドの末尾に「必須」という単語を追加/削除する必要があります。

このボックスはデフォルトでオンになっています。ユーザーがボックスのチェックを外すと、必要に応じて入力に「必須」が追加されます (そうでない場合)。ただし、ボックスを再チェックすると、「removeProp」は「required」を削除しません。これで何が間違っていますか?同じ結果でpropとattr関数の両方を試しました。

<input type="checkbox" id="billing" checked>

<input type="text" id="b_name" pattern="alpha" required>


$('#billing').change(function() {

    // Same as Shipping Address
    if ($(this).is(':checked')) {
      $('#b_name').removeProp('required');
    }
    else if (!$(this).is(':checked')) {
      $('#b_name').prop('required', true);
    }

  });
4

2 に答える 2

0

これを試して:

$('#billing').change(function() {

    // Same as Shipping Address
    if ($(this).is(':checked')) {
      $('#b_name').prop('required', false);
    }
    else {
      $('#b_name').prop('required', true);
    }

  });
于 2014-09-24T03:31:16.283 に答える
0

そこでの行動がよくわかります。プロパティを削除すると、プロパティは追加されません。

Jquery docs for .removeProp()で言及されている同じケースを確認できます。

それが言うように -

注: このメソッドを使用して、checked、disabled、または selected などのネイティブ プロパティを削除しないでください。これにより、プロパティが完全に削除されます。一度削除すると、要素に再度追加することはできません。.prop() を使用して、代わりにこれらのプロパティを false に設定してください。

したがって、プロパティを完全に削除するのではなく、チェック時に false および true に設定してチェックを外すことができます

$('#billing').change(function() {

    // Same as Shipping Address
    if ($(this).is(':checked')) {
      $('#b_name').prop('required', false);
    }
    else if (!$(this).is(':checked')) {
      $('#b_name').prop('required', true);
    }

  });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="checkbox" id="billing" checked>

<input type="text" id="b_name" pattern="alpha" required>

于 2014-09-24T03:35:21.727 に答える