멀티 카페고리관련하여 문의좀 드립니다. 정보
멀티 카페고리관련하여 문의좀 드립니다.본문
일전에 질문을 올렸는데, 아직도 해결을 못하여 다시한번 올려봅니다.
http://sir.co.kr/bbs/board.php?bo_table=g4_plugin&wr_id=13175&sca=&sfl=wr_subject%7C%7Cwr_content&stx=%EC%B9%B4%ED%85%8C%EA%B3%A0%EB%A6%AC
이온프리님의 계층형 카테고리를 사용중인데요..
카테고리를 2개 또는 3개를 선택할수 있게 하려고합니다.
원하는 형태는 이미지로 첨부했습니다.
저모양대로 셀렉트가 작동만되면 차후 저장하거나 이런부분은 할수 있을것같은데,
저렇게 3개를 뿌리는거 자체가 너무 힘들어서 조언좀 얹고자합니다.
자바스크립트지식이 아주 짧거든요..ㅠㅠ
해당부분의 소스도 올려봅니다.
function write_input_select($ca_text)
{
global $bo_table,$__mc,$category_option;
if(is_object($__mc) && $__mc->bo_table==$bo_table){
}else{
echo '<select name=ca_name required itemname="분류"><option value="">선택하세요'.$category_option.'</select> ';
return;
}
$max = $__mc->getMaxDepth();
echo '
<script type="text/javascript">
var next_mc_obj = null;
var mc_select = function(obj,i)
{
var ajax = document.getElementById("opt-category-ajax");
var el = document.getElementById("ca-text");
var old_el_value = el.value;
var old_el_arr = (old_el_value || "").split(/-/);
var new_el_value = obj.value;
var new_el_arr = (new_el_value || "").split(/-/);
if(old_el_arr.length>new_el_arr.length){
var _el;
for(var j=i;j<' . ($max + 1) . ';j++)
{
_el = document.getElementById("mc_obj_"+(j+1));
if(_el){
_el.length=1;
_el.disabled="disabled";
}
}
}
if(obj.value=="" && old_el_value){
if(i>2) {
el.value = (old_el_value.split(/-/).slice(0,i-1).join("-"));
}else{
el.value = "";
}
}else{
el.value = obj.value;
}
if(obj.value==""){
return;
}
next_mc_obj = document.getElementById("mc_obj_"+(i+1));
if(next_mc_obj){
next_mc_obj.length=1;
if(document.getElementById("__opt__tmp__ajax")){
document.getElementsByTagName("head")[0].removeChild(document.getElementById("__opt__tmp__ajax"));
}
var _ajax = document.createElement("script");
_ajax.id="__opt__tmp__ajax";
_ajax.type = "text/javascript";
document.getElementsByTagName("head")[0].appendChild(_ajax);
_ajax.src = "/board/skin/multi_category/ajax.php?mode=list&bo_table=' . $bo_table . '&ca_name="+el.value+"&dummy="+(new Date().getTime() / 1000);
}else{
next_mc_obj = null;
}
}
</script>
<script id="opt-category-ajax" type="text/javascript"></script>
<input type="hidden" name="ca_name" id="ca-text" value="' . $ca_text . '"/>
';
$arr = explode('-', $ca_text);
$depth = count($arr);
for ($i = 2; $i <= $max + 1; $i++) {
$rows = array();
$disabled = '';
if ($i <= $depth + 1) {
$row = $__mc->get(join('-', array_slice($arr, 0, $i - 1)), 'ca_text');
$rows = $__mc->getChilds($row);
}
if (empty($rows)) {
$disabled = ' disabled="disabled"';
}
$check_txt = join('-', array_slice($arr, 0, $i));
echo '<select itemname=카테고리 onchange="mc_select(this,' . $i . ');"' . $disabled . ' id="mc_obj_' . $i . '">';
echo '<option value="">선택해 주세요</option>';
foreach ($rows as $row) {
$selected = $row->ca_text == $check_txt ? ' selected="selected"' : '';
echo '<option value="' . $row->ca_text . '"' . $selected . '>' . stripslashes($row->title) . '</option>';
}
echo '</select> ';
}
}
http://sir.co.kr/bbs/board.php?bo_table=g4_plugin&wr_id=13175&sca=&sfl=wr_subject%7C%7Cwr_content&stx=%EC%B9%B4%ED%85%8C%EA%B3%A0%EB%A6%AC
이온프리님의 계층형 카테고리를 사용중인데요..
카테고리를 2개 또는 3개를 선택할수 있게 하려고합니다.
원하는 형태는 이미지로 첨부했습니다.
저모양대로 셀렉트가 작동만되면 차후 저장하거나 이런부분은 할수 있을것같은데,
저렇게 3개를 뿌리는거 자체가 너무 힘들어서 조언좀 얹고자합니다.
자바스크립트지식이 아주 짧거든요..ㅠㅠ
해당부분의 소스도 올려봅니다.
function write_input_select($ca_text)
{
global $bo_table,$__mc,$category_option;
if(is_object($__mc) && $__mc->bo_table==$bo_table){
}else{
echo '<select name=ca_name required itemname="분류"><option value="">선택하세요'.$category_option.'</select> ';
return;
}
$max = $__mc->getMaxDepth();
echo '
<script type="text/javascript">
var next_mc_obj = null;
var mc_select = function(obj,i)
{
var ajax = document.getElementById("opt-category-ajax");
var el = document.getElementById("ca-text");
var old_el_value = el.value;
var old_el_arr = (old_el_value || "").split(/-/);
var new_el_value = obj.value;
var new_el_arr = (new_el_value || "").split(/-/);
if(old_el_arr.length>new_el_arr.length){
var _el;
for(var j=i;j<' . ($max + 1) . ';j++)
{
_el = document.getElementById("mc_obj_"+(j+1));
if(_el){
_el.length=1;
_el.disabled="disabled";
}
}
}
if(obj.value=="" && old_el_value){
if(i>2) {
el.value = (old_el_value.split(/-/).slice(0,i-1).join("-"));
}else{
el.value = "";
}
}else{
el.value = obj.value;
}
if(obj.value==""){
return;
}
next_mc_obj = document.getElementById("mc_obj_"+(i+1));
if(next_mc_obj){
next_mc_obj.length=1;
if(document.getElementById("__opt__tmp__ajax")){
document.getElementsByTagName("head")[0].removeChild(document.getElementById("__opt__tmp__ajax"));
}
var _ajax = document.createElement("script");
_ajax.id="__opt__tmp__ajax";
_ajax.type = "text/javascript";
document.getElementsByTagName("head")[0].appendChild(_ajax);
_ajax.src = "/board/skin/multi_category/ajax.php?mode=list&bo_table=' . $bo_table . '&ca_name="+el.value+"&dummy="+(new Date().getTime() / 1000);
}else{
next_mc_obj = null;
}
}
</script>
<script id="opt-category-ajax" type="text/javascript"></script>
<input type="hidden" name="ca_name" id="ca-text" value="' . $ca_text . '"/>
';
$arr = explode('-', $ca_text);
$depth = count($arr);
for ($i = 2; $i <= $max + 1; $i++) {
$rows = array();
$disabled = '';
if ($i <= $depth + 1) {
$row = $__mc->get(join('-', array_slice($arr, 0, $i - 1)), 'ca_text');
$rows = $__mc->getChilds($row);
}
if (empty($rows)) {
$disabled = ' disabled="disabled"';
}
$check_txt = join('-', array_slice($arr, 0, $i));
echo '<select itemname=카테고리 onchange="mc_select(this,' . $i . ');"' . $disabled . ' id="mc_obj_' . $i . '">';
echo '<option value="">선택해 주세요</option>';
foreach ($rows as $row) {
$selected = $row->ca_text == $check_txt ? ' selected="selected"' : '';
echo '<option value="' . $row->ca_text . '"' . $selected . '>' . stripslashes($row->title) . '</option>';
}
echo '</select> ';
}
}
댓글 전체
http://www.appelsiini.net/projects/chained
이걸 한번 참고해보세요.
이걸 한번 참고해보세요.