2009-06-22 5 views
0

DOM을 조작하기위한 많은 JavaScript 기능이 포함 된 웹 양식이 있습니다. 이것은 AJAX를 사용하여 엘리먼트 숨김, 드롭 다운 메뉴 삭제, 선택 항목 제거 및 새 항목 삽입과 같이 수행해야하는 모든 작업을 반환하는 서비스를 호출하여 수행됩니다.양식을 다시 게시 할 때 클라이언트 요소가 업데이트되지 않습니다.

모든 것이 예상대로 작동합니다 하나의 특정 기능. 이 함수는 내 AJAX 호출이 반환 한 값에 따라 select 요소에서 기본값을 비활성화하고 설정합니다. 예를 들어, 다음 선택에서 "foo"를 선택했다고 가정 해 보겠습니다.

<select id="mySelect2"> 
    <option value="0">Default</option> 
    <option value="foo">Foo</option> 
    <option value="another_foo">Foo 2</option> 
</select> 

위대한! 이제는 AJAX 호출을 트리거 한 웹 양식의 다른 요소를 변경했습니다. 반환 된 데이터는 Default를 선택하고 select 요소를 비활성화해야 함을 알려줍니다. 이것은 잘 작동합니다. 그러나 레코드를 다시 저장하고 DB에서 확인하면이 경우 기본값 인 0이 저장되지 않습니다. 레코드는 이전에 선택한 항목 ("foo")과 함께 유지됩니다.

당신은,이 달성하기 위해 다음 코드를 궁금 사용하는 경우

  1. 는 AJAX 호출

    $('myElement').change(GetData); 
    
  2. GetData 메서드

    $.ajax({ 
        type: 'POST', 
        url: 'myUrl', 
        data: "{'id':'" + myIdFromMyElement + "'"}", 
        contentType: 'application/json; charset=utf-8', 
        dataType: 'json', 
        success: OnSuccess, 
        error: OnError 
    }); 
    
  3. 선택을 조작 바인드를 반환 된 데이터에 따라 요소 :

    function OnSuccess(data, textStatus) { 
        if (data.d.DisableMySelect2){ 
         $('#mySelect2').val('0'); 
         $('#mySelect2').attr('disabled', 'disabled'); 
        } 
    } 
    

왜 이런 일이 무엇입니까?

편집 : 내 웹 양식이 올바르게 변경된 값을 바인딩 해제하지 않습니다하지만 난 Request.Form["mySelect2"]을 갈 때 나는 실제로 업데이트 된 값을 볼 수 있다는 것을 보여

또한 조사, 그래서 분명히의 클라이언트 측 아무 문제가 없다 소지품.

답변

2

disabled 인 양식 요소가 양식과 함께 제출되지 않았기 때문에 이러한 현상이 발생했다고 생각합니다.

AJAX 호출을 통해 양식 제출을 처리하거나 숨겨진 입력을 사용하여 비활성화 된 SELECT 요소의 선택된 옵션 값을 저장할 수 있습니다.

+0

옙 당신은 분명하지만 추가 조사 결과 내 웹 양식이 값을 올바르게 바인딩하지 않는다는 것을 알았지 만 Request.Form에 갈 때 업데이트 된 값이 포함되어 있습니다. –

+0

CMS에 있습니다. 감사. –

+0

당신은 afgallo를 환영합니다. – CMS

관련 문제