2010-06-10 2 views
1

기본적으로 여러 확인란이 선택되어있는 검색 양식이 있습니다. 양식이 GET으로 제출되면 URL에는 체크 된 채로있는 체크 박스 목록 만 포함됩니다.확인란을 만드는 방법은 다른 입력과 동일한 제출 동작을 사용합니까?

http://www.example.com/page/?checkbox1=yes&checkbox2=yes 

이 시나리오는 사용자가 처음이 검색 페이지에 도착할 때 그들이 선택하지 않은 모든 체크 박스와 양식을 제출 때의 QueryStrings이 같은 보이기 때문에 사이의 차이를 결정하기에 그것은 어렵다.

이 문제를 해결하기 위해 동일한 이름과 '아니오'값으로 확인란 앞에 숨겨진 필드를 주입하기 시작했습니다. 체크 박스가 체크되어 있지 않으면 브라우저는 숨겨진 필드의 값을 보내지 않으며 체크 박스가 설정되면 브라우저는 체크 박스의 '예'값으로 숨겨진 필드를 오버라이드합니다.

이 FF에서 작동하는 것 같다
http://www.example.com/page/?checkbox1=no&checkbox2=no 

, 크롬, 사용에 IE5.5 + I'am 나는 그렇게 안전 : 사용자가 모든 체크 박스와 양식을 제출

<input type="hidden" name="checkbox1" value="no" /> 
<input type="checkbox" name="checkbox1" value="yes" /> 

나는이 쿼리 문자열을 얻을 선택 취소 이 방법이나 체크 박스를 입력처럼 제출하고 선택하는 더 좋은 방법이 있습니까?

답변

2

정말 영리한 아이디어입니다. 요청에 체크되지 않은 체크 박스가 나타나지 않으므로 사용자가 처음으로 양식을 입력했는지 알 수 있습니다.

그러나 기본값을 사용하여 숨겨진 필드를 간단히 사용할 수 있다는 것을 알고 있습니다. 따라서 사용자가 양식을 입력하면 매개 변수가 설정되지 않습니다. 양식을 제출하자마자 값이 설정됩니다.

은 또한 제출 버튼의 이름을 사용할 수 있으며 제출 된 경우는 볼 수

<input type="submit" name="submit" /> 

이 문제를 해결인가요?

+0

제출 단추를 사용하여 양식을 제출 한 경우 (및 값이있는 경우에만). 양식이 입력 키 (적어도 일부 브라우저에서는) 또는 JavaScript에 의해 제출 된 경우 제출되지 않습니다. – Quentin

+0

제출 가치를 보내지 않으므로 IE에 적합합니다. 그건 내 첫 조언 (어쨌든 더 낫다) 문제를 해결할 것입니다 :) – 2ndkauboy

0

주소 진짜 문제 :

는 사용자가 먼저 검색 페이지에 도착하고 모든 체크 박스와 양식을 선택 취소 제출할 때

가 함께 하나 개의 숨겨진 필드가있을 때의 차이를 결정

<input type="hidden" name="submitted" value="true"> 

줄 그런 다음 그룹의 체크 박스를 사용할 수 있습니다

,
<input type="checkbox" name="foo" value="bar" id="foo_bar"> 
<label for="foo_bar">Bar</label> 

<input type="checkbox" name="foo" value="baz" id="foo_baz"> 
<label for="foo_baz">Baz</label> 

그런 다음 서버에서 반복 할 수 있습니다. 어떻게하는지는 서버 측 환경에 따라 다릅니다. 대부분의 언어에서 데이터 배열 (IIRC Java 형식 라이브러리는 이러한 방식으로 작동하는 경향이 있음)을 반환하는 메서드를 호출하거나 배열 컨텍스트에서 데이터를 요청할 수 있습니다 (Perl 라이브러리는 일반적으로이 방식으로 작동합니다). PHP는 서버 측 프로그래밍을위한 공통 언어이며 다소 이상합니다. 필드 이름을 []으로 끝내야합니다.

-1

제대로 작동하는 것 같습니다. 양자 택일로 당신은 일반적인 입력처럼 행동하는 것을 피할 수 있고 입력이 존재 하는지를 확인하기 만하면된다. (입력이 존재하지 않는다면 거짓으로 처리한다. 예를 들어

, PHP의

경우 (는 isset ($ _ GET [ 'CheckBox1을']) {...} ASP.NET

경우 (Request.QueryString [ "checkbox1"]! = null) {...}

물론 당신은 아마 당신을 가질 것입니다. 클라이언트 측에서 원하는 이유.

+0

"사용자가이 검색 페이지에 처음 도착한 시점과 모든 체크 박스가 선택되지 않은 상태로 양식을 제출할 때의 차이를 확인하십시오"라는 문항의 문제는 해결되지 않습니다. – Quentin

+0

감사합니다. 그것을 보는 또 다른 방법. – smdrager

관련 문제