비활성화 된 입력 값은 제출되지 않습니다


답변:


189

예, 모든 브라우저는 비활성화 된 입력을 읽기 전용이므로 제출해서는 안됩니다.

자세한 정보 (섹션 17.12.1)

속성 정의

disabled [CI] 폼 컨트롤로 설정하면이 부울 속성은 사용자 입력 컨트롤을 비활성화합니다. 설정하면 disabled 속성이 요소에 다음과 같은 영향을 미칩니다.

  • 비활성화 된 컨트롤에는 포커스가 없습니다.
  • 탭 탐색에서 비활성화 된 컨트롤을 건너 뜁니다.
  • 비활성화 된 컨트롤은 성공할 수 없습니다.

다음 요소는 disabled 속성을 지원합니다 : BUTTON, INPUT, OPTGROUP, OPTION, SELECT 및 TEXTAREA.

이 속성은 상속되지만 로컬 선언은 상속 된 값보다 우선합니다.

비활성화 된 요소가 렌더링되는 방법은 사용자 에이전트에 따라 다릅니다. 예를 들어, 일부 사용자 에이전트는 메뉴 항목, 단추 레이블 등을 "회색으로 비활성화"했습니다.

이 예에서는 INPUT 요소가 비활성화되어 있습니다. 따라서 사용자 입력을 수신 할 수 없으며 해당 값을 양식과 함께 제출하지 않습니다.

<INPUT disabled name="fred" value="stone">

노트. disabled 속성의 값을 동적으로 수정하는 유일한 방법은 스크립트를 사용하는 것입니다.


86
해결 방법 : <input type="hidden">비활성화 된 입력과 이름 / 값이 같은 요소를 추가하십시오 .
John Kugelman

어떤 브라우저가하고 어떤 브라우저에 따르지 않는 정보가 있습니까?
Allisone

82
대신 readonly = "readonly"사용 :) stackoverflow.com/questions/7357256/…
Adrien Be

1
@Allisone : Firefox 및 Chrome이이를 준수하는 것 같습니다 (비활성화 된 입력은 제출되지 않음). 다른 브라우저에서는 시도하지 않았습니다.
Adrien Be

1
@JohnKugelman 왜 같은 이름입니까? 장애인은 어쨌든 제출되지 않을 것입니다. 숨겨진 이름을 가진 실제 이름을 부여하고 장애인을위한 다른 이름을 사용할 수 있습니다
Arth

286

disabled 입력은 데이터를 제출하지 않습니다.

readonly속성을 사용하십시오 .

<input type="text" readonly />

여기에 소스


@FrankFang, Ok, 그러나 데이터를 Laravel 집단의 블레이드 템플릿으로 전달할 때. 작동하지 않습니다. 그런 식으로 데이터를 보낼 수 없습니다.
ssi-anik

@ ssi-anik readonly작동합니다. 입력에 "name"attr을 전달하십시오.
BenNov

26

비활성화 된 것을 흉내 내기 위해 세 가지를 사용할 수 있습니다.

  1. HTML : readonly속성 (입력에있는 값을 양식 제출에 사용할 수 있습니다. 또한 사용자는 입력 값을 변경할 수 없습니다)

  2. CSS : 'pointer-events':'none'(사용자가 입력을 클릭하지 못하도록 차단)

  3. HTML : tabindex="-1"(사용자가 키보드 입력으로 이동하지 못하도록 차단)


22

그것이 W3C 사양에서 말하는 것이므로 제출되지 않습니다 .

17.13.2 성공적인 통제

성공적인 제어는 제출에 "유효"합니다. [한조각]

  • 비활성화 된 컨트롤은 성공할 수 없습니다.

다시 말해, 사양에 따라 비활성화 된 컨트롤은 유효하지 않은 것으로 간주되어 제출해서는 안됩니다.


2

Disabled통제는 성공할 수 없으며 성공적인 통제는 제출에 "유효"합니다. 이것이 비활성화 된 컨트롤이 양식과 함께 제출되지 않는 이유입니다.


1

두 가지, 즉 속성이 있습니다 readonlydisabled반 읽기 전용 입력을 할 수 있습니다. 그러나 그들 사이에는 작은 차이가 있습니다.

<input type="text" readonly />
<input type="text" disabled />
  • readonly속성은 입력 텍스트를 비활성화하며 사용자는 더 이상 텍스트를 변경할 수 없습니다.
  • disabled속성은 입력 텍스트를 비활성화 (변경 불가능 )하게 할뿐만 아니라 제출할 수 없습니다 .

jQuery 접근법 (1) :

$("#inputID").prop("readonly", true);
$("#inputID").prop("disabled", true);

jQuery 접근 방식 (2) :

$("#inputID").attr("readonly","readonly");
$("#inputID").attr("disabled", "disabled");

자바 스크립트 접근 :

document.getElementById("inputID").readOnly = true;
document.getElementById("inputID").disabled = true;

PS disabled이며 readonly표준 HTML 속성입니다. prop으로 소개되었습니다 jQuery 1.6.


0

읽기 전용 속성에서도 여전히 선택 컨트롤을 클릭 할 수 있음

여전히 컨트롤을 비활성화하고 싶지만 값을 게시하려는 경우. 숨겨진 필드를 만드는 것을 고려할 수 있습니다. 컨트롤과 동일한 값으로

그런 다음 선택 변경시 jquery를 만듭니다.

$('#your_select_id').change(function () {
    $('#your_hidden_selectid').val($('#your_select_id').val());
});
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.