使用空字符串设置属性

Set attribute with an empty string

我正在尝试使用 jQuery 在字段上切换 required 属性。在页面加载时,我将 required 属性添加到相关元素:

$("[data-required]").attr("required", "");

然后我有一个切换函数可以做很多事情,包括切换 required 属性:

if ($(childInput).attr('data-required')) {
  if (element.checked) {
    $(childInput).attr('required', '');
    $(childInput).rules('add', { required: true });
  }
  if (!element.checked) {
    $(childInput).attr('required', false);
    $(childInput).rules('remove');
  }
}

但是,在这两种情况下(在页面加载和切换时),required 属性都设置为 required="required"。我是在使用不正确的语法,还是遗漏了什么?我不明白为什么要在属性值中插入“required”。

.attr("required", true);.attr("required", "true"); 导致相同的行为。

好的,我不完全确定为什么,但这行得通:

$("[data-required]").prop("required", true);

切换函数中的if语句:

if ($(childInput).attr('data-required')) {
  if (element.checked) {
    $(childInput).prop('required', true);
    $(childInput).rules('add', { required: true });
  }
  if (!element.checked) {
    $(childInput).attr('required', false);
    $(childInput).rules('remove');
  }
}