Почему истинное значение отображается как «значение»? - PullRequest
1 голос
/ 10 мая 2019

у меня есть:

input(type="hidden" name="x" value=pax?pax.C1a:undefined)

Когда pax как передано response.render равно { C1a: true }, вывод отображается как:

<input type="hidden" name="x" value="value" />

Разве это не должно быть "правдой"?

Когда pax.C1a ложно, оно отображается как:

<input type="hidden" name="x" />

1 Ответ

2 голосов
/ 10 мая 2019

С HTML5 spec :

Количество атрибутов: логические атрибуты . Наличие логического атрибута в элементе представляет истинное значение, а отсутствие атрибута представляет ложное значение.

Если атрибут присутствует, его значение должно быть либо пустой строкой, либо значением, которое является ASCII-регистронезависимым совпадением для канонического имени атрибута, без начального или конечного пробела.

Примечание: Значения "true" и "false" недопустимы для логических атрибутов.

<input type="hidden" name="x" value="value" /> - это второй случай, упомянутый во втором абзаце, который я цитировал; первый случай будет <input type="hidden" name="x" value />, оба представляют истинное логическое значение. В записке прямо сказано, что, по вашему мнению, должно происходить (value="true"), если не происходит.

Если вы действительно хотите value="true", вы должны рассматривать его как текстовый атрибут и визуализировать с помощью { C1a: "true" }.

...