0

我有一个复选框,我用它来切换输入字段是否使用 jQuery “必需”。这是 Foundation Abide 验证的一部分。因此,在输入字段的末尾,它需要添加/删除“必需”一词。

默认情况下选中该框。当用户取消选中该框时,它应该将“必需”添加到输入中(否则)。但是,如果您重新选中该框,“removeProp”不会删除“必需”。我在这方面做错了什么?我已经尝试过 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

您可以清楚地看到那里的行为。一旦它删除了该属性,它就不会重新添加该属性。

您可以在Jquery 文档中看到 .removeProp()中提到的相同案例。

正如它所说 -

注意:请勿使用此方法删除本机属性,例如选中、禁用或选中。这将完全删除该属性,并且一旦删除,就不能再次将其添加到元素中。使用 .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 回答
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 回答