2013-04-26 3 views
1

아래 코드가 있습니다. 선택 후에 모든 것이 비활성화됩니다.선택 후 드롭 다운에서 선택 값을 가져 오는 방법

<select id="dropdown" name="dropdown" onchange="javascript:this.disabled = 'disabled';"> 
<option value="dropdown">Pls select one 
<option value="apple">Apple 
<option value="oragne">Orange 
<option value="grapes">Grapes 
</select> 

제출을 클릭하면 "드롭 다운"값이 전달되지 않습니다. 내가 여기서 뭔가를 놓치고 있니?

답변

1

비활성화 된 양식 컨트롤이 제출되지 않습니다. 이것은 정상적인 동작입니다.

한 가지 해결 방법은 이 제출 될 숨겨진 입력으로 선택한 값을 복사하는 것입니다.

은 (난 정말하지만 변화의 선택을 해제하지 않는 것이 좋습니다? -? 사용자가 실수로 잘못된 일을 클릭하면 어떻게 그들이 키보드로 선택하려고 한 경우)

(그리고 다른 제쳐두고, 인라인 이벤트 속성에 javascript:이 필요하지 않습니다.

EDIT : 숨겨진 입력을 구현하는 방법은 무엇입니까? 음, 숨겨진 입력을 서버 측 코드가 기대하는 이름을 (그리고 선택 요소에서 name 속성을 제거) :

<input type="hidden" name="dropdown" id="dropdown"> 

과 같은 다음 onchange 속성을 볼 수있는 작품 :

<select onchange="document.getElementById('dropdown').value=this.value; this.disabled=true;"> 
+0

그래서 숨겨진 입력 값으로 선택한 값을 전달합니까? 감사! :) – francoom

+0

그래, 내 대답에 대한 예제를 추가했습니다. – nnnnnn

+0

그것은 일했다 !!!! 감사! :) – francoom

0

드롭 다운을 사용 중지했기 때문에 드롭 다운에서 선택한 옵션의 값이 전달되지 않습니다. 어쩌면 그 이유는 왜. 비활성화하지 마십시오.

0

비활성화 된 선택 항목이 기본적으로 제출되지 않는 것 같습니다.

다른 숨겨진 선택 요소를 추가 할 수 있습니다. 스크립트를 사용하여 제출할 선택을하십시오.

0

컨트롤을 사용하지 않도록 설정 한 다음 해당 값을 제출하는 것은 의미가 없습니다. 제출 된 값을 원하면 해제하지 마십시오.

어쨌든, 하나의 옵션은 제출하기 전에 제어를 가능하게하는 것입니다

<form ... onsubmit="this.dropdown.disabled = false;"> 

지금 당신은 어느 곳에서나 값을 복사하지 않고 값이 컨트롤이 무효 여부 제출됩니다.

관련 문제