2012-03-05 2 views
1

나는 AJAX 포스트 콜을 통해 폼을 실행하고 있지만 메일 스크립트가 처리 될 때 체크 표시를하거나 선택 해제해도 관계없이 체크 박스의 값은 동일하게 유지됩니다.

선택하지 않으면 값을 변경하고 싶습니다. 확인란을 선택 취소하면 값이 "아니요"등으로 변경됩니다.

여기 내 코드가 있습니다. 무엇이 잘못 되었나요?

<input type="checkbox" name="newsletter" id="newsletter" checked="checked" value="1"/> 

아약스 전화가 여기에 있습니다 : 여기 http://pastebin.com/gFGbWZ1D

빌 메일 스크립트 : http://pastebin.com/d6hCVmzQ

건배, 마이크

+0

여기에 연결하는 대신 코드를 게시하는 것이 좋습니다. –

+0

게시 할 수있는 링크의 양이 제한되어 있습니다 .plus phpcode가 제대로 표시되지 않습니다. 하지만 PasteBin을 사용하는 주된 이유는 원래의 메시지가 2 페이지의 코드로 넘치지 않았기 때문입니다. :) –

답변

1

체크 박스의 값에 관계없이 항상 1이 될 것이다 jQue를 사용하여 값을 볼 때 확인 여부 너. 당신이해야 할 일은
은 체크 박스가 체크되어 있는지입니다 :

var newsletter = $("#newsletter").is(":checked")?1:0; 
+0

실제로 Ben Ashton의 의견과이 코드를 결합하여 완벽하게 작동했습니다 (1/0 대신 Ben의 YES/NO 값을 원했습니다). –

1
$('#newsletter').click(function(){ 
    if($(this).val() == 1) { 
     $(this).val('no'); 

     // I'd recommend doing it this way for consistency sake 
     $(this).val(0); 
    } 
}); 
+0

이것은 작동하지 않습니다. 이 메일 스크립트와 실제 메일 스크립트간에 충돌이 있다고 가정합니다. –

1

당신은 당신의 PHP 메일 스크립트에서 체크 박스의 값을 확인하고 약간 다르게 처리해야합니다.

내 접근 방식은이 작업을 수행하는 것입니다 : 체크 박스는 하나 개의 값을 가질 수 있기 때문에 당신은,이 경우의 값을 결정하기 위해 PHP를 사용하는

if(isset($_POST['newsletter'])&&$_POST['newsletter']==1) $newsletter="yes"; else $newsletter="no"; 

! 체크 된 값은 html 값과 같지만 예제에서는 if 문에서 HTML 필드의 값만 사용합니다.

if (isset ($ _ POST [ 'newsletter'])) //이 요소가 양식 제출에 있는지 확인하고 $ _POST [ 'newsletter'] == 1 // 확인란이 선택되어 있는지 확인합니다. $ _POST [ 'newsletter']의 값을 반향 시키면 항상 1이되므로 메일 스크립트의 논리를 조정하여 "checked then then else"형식의 스타일을 사용해야합니다 사물의.

+0

작동하지 않 았습니다 ... 이것을 포함하고 있습니까? 실제로 오류가 있다고합니다. –

+0

그 이유는 그가 다른 문제들 가운데 코드에 열린 괄호를 가지고 있기 때문입니다. –

+0

아, 게시 한 후에 보았습니다. 값은 yes로 변경되지만 선택을 취소하면 값은 여전히 ​​동일하게 유지됩니다. 이상한. 어떤 제안? –