2013-02-25 1 views
2

빠른 질문.값이 int인지 찾기 드롭 다운 상자

DB의 항목이 포함 된 선택 드롭리스트가 있습니다. 사용자가 텍스트 상자에 타이핑 할 때, jQuery 코드는 선택 옵션을 반복하면서 고유 항목을 입력하고있다. 동일한 항목을 입력하면 해당 항목이 선택 드롭 다운에서 선택됩니다.

그건 그렇습니다.

내 문제는 사용자가 고유 한 값을 입력하면 아약스를 통해 내 서버에 게시하는 것입니다. 그러나 드롭 다운을 반복 할 때마다 게시됩니다.

내 AJAX 코드가 목록을 선택하는 각 항목 int를 반복하는 $ .each 루프에 들어 있기 때문에 그 이유를 알았습니다. 어떻게 코드를 작성하여 포스트 액션이 한 번만 발생하도록 할 수 있습니까?

// grab current val 
var cv = $(this).val(); 

// loop through gov bodies drp to make sure that value isn't already present 
$("#drpCurrentGOVBody option").each(function() { 

    if (cv == $(this).text()) { 

     //value is already present 
     //select it in drp down 
     $(this).attr('selected', 'selected'); 

    } else { 

     //value isn't present. Add it to db  

    } 

}); 

// post to db 
$.post('ajax/school_search_results.php', { 
    add_new_gov_type: true, 
    data: cv, 
    action: 'newgov' 
}, function (data) { 
    $("#drpCurrentGOVBody").html(data); 
}); 

나는 또한 해당 섹션의 그림을 첨부했습니다. enter image description here

미리 도움을 주셔서 감사합니다.

+0

끝에 '}};가 있습니다. 귀하의 아약스는 '각'의 일부가 아닙니다. – sachleen

+0

감사합니다. 코드를 빠르게 편집했습니다. –

답변

1

Ajax를 사용하여 보내는 데이터를 변수 (루프 외부)에 저장해야합니다. 일단 데이터가 전송중인 새 데이터와 같으면 루프 검사를 실행하고 그렇지 않으면 루프를 사용하여 보내야합니다 Ajax 코드를 건너 뛴다면 Ajax 코드를 건너 뛰십시오. 또한 해당 변수가 아직 정의되지 않은 경우 Ajax를 사용하여 서버에 보내야합니다. 아마 루프가 처음 실행되기 때문입니다.

도움이 되시길 바랍니다.

+1

감사합니다. 간단하지만 효과적인. –

+0

반갑습니다. Btw,이 속임수는 당신이 미래에 만들 수있는 다른 루프에 대해서도 매우 유용합니다. 아마도 데이터를 보내지 않을 수도 있지만, 당신은 물건을받지 못할 것입니다. 그것을 명심해라, 하하. :) –