[점프투장고 3-15] 정렬시 select박스의 selected 속성적용이 되지 않습니다.
정렬기능 자체는 잘 동작합니다만
셀렉트박스가 선택항목으로 고정되지 않는 현상이 있습니다.
추천순 또는 인기순으로 선택시 각 정렬기준으로 정렬은 되지만 셀렉트 박스는 다시 최신순으로 원복 되기때문에
정렬기준을 최신순으로 변경할 수 없는 문제가 있습니다.
(이대로라면 so가 언제든 recent인 상태이기 때문에 javascript의 on.change 가 수행되지 않을것 같습니다. )
<select class="form-select so">
<option value="recent" {% if so == 'recent' %}selected{% endif %}>최신순</option>
<option value="recommend" {% if so == 'recommend' %}selected{% endif %}>추천순</option>
<option value="popular" {% if so == 'popular' %}selected{% endif %}>인기순</option>
</select>
소스상으로 보면 선택한 so에 의해 selected 속성이 적용되어야 할 것 같은데, 개발자 도구로 확인해보니 so가 저장이 안되는건지 selected 속성 적용이 되지 않네요.
-------------- 기본상태
-------------- 추천순 클릭상태
{% block script %}
<script type='text/javascript'>
$(document).ready(function() {
$(".page-link").on('click', function() {
$("#page").val($(this).data("page"));
$("#searchForm").submit();
});
$("#btn_search").on('click', function() {
$("#kw").val($(".kw").val());
$("#page").val(1);
$("#searchForm").submit();
});
$(".so").on('change', function() {
$("#so").val($(this).val());
$("#page").val(1);
$("#searchForm").submit();
});
});
</script>
{% endblock %}
자바스크립트 영역도 혹시 몰라서 첨부드립니다. 선생님 소스를 복붙해보기도 해서 오타는 아닐겁니다 ㅠㅠㅠ
atempestg 님 454
M 2023년 3월 26일 1:01 오후
+1
가장 중요한 searchForm의 소스가 안보이네요. searchForm을 보여주시고 파이썬 소스도 보여주세요. 파이썬 코드에서 so 에 값을 적용했는지도 확인해 보세요.
-
박응용님,
2023년 3월 26일 1:14 오후
추천
,
대댓글
@박응용님 searchform 은 아래와 같습니다.
</ul>
<!-- 페이징 처리 끝 -->
<a href="{% url 'pybo:question_create' %}" class="btn btn-primary">질문 등록하기</a>
</div>
<form id="searchForm" method="get" action="{% url 'index' %}">
<input type="hidden" id="kw" name="kw" value="{{ kw|default_if_none:'' }}">
<input type="hidden" id="page" name="page" value="{{ page }}">
<input type="hidden" id="so" name="so" value="{{ so }}">
</form>
base_views.py index 함수내 정렬부분은 아래와 같습니다.
# 입력인자
page = request.GET.get('page','1')
kw = request.GET.get('kw','')
so = request.GET.get('so', 'recent')
# 정렬
if so == 'recommend':
question_list = Question.objects.annotate(
num_voter=Count('voter')).order_by('-num_voter', '-create_date')
elif so == 'popular':
question_list = Question.objects.annotate(
num_answer=Count('answer')).order_by('-num_answer','-create_date')
else :
question_list = Question.objects.order_by('-create_date')
-
atempestg님,
M 2023년 3월 26일 1:25 오후
추천
,
대댓글
@atempestg님 index 함수 가장 마지막에 so 값을 context 변수에 저장하는 과정이 있습니다. 그게 진행되었는지 확인해 보세요.
-
박응용님,
2023년 3월 26일 3:30 오후
추천
,
대댓글