셀렉트 박스 선택시 다중 선택 체크... 정보
셀렉트 박스 선택시 다중 선택 체크...
본문
<?
$sp = ",";
$options = '<option value="">선택▼</option>';
$queryW = "SELECT mb_name FROM g4_member WHERE mb_4=1 ORDER BY mb_name";
$resultW = mysql_query($queryW);
while ( $rowW = mysql_fetch_assoc($resultW) )
{
$options.= '<option value="'.$rowW['mb_name'].$sp.'">'.$rowW['mb_name'].'</option>';
}
?>
<select id="mb_name" name="mb_name"
onchange="document.getElementsByName('wr_tel')[0].value+=this.value;
check.location.href='check_member.php?check_member='+this.value+'&wr_11=<?=$wr_link1;?>&wr_12=<?=$wr_link2;?>&wr_7=<?=$wr_7;?>&wr_8=<?=$wr_8;?>'">
<?=$options?></select>
<input type="text" id="wr_tel" name="wr_3" value="" style="width:68%; background-color:#FFFF99;" class="tx">
위의 소스에서 보시면
먼저 mb_name이 현재 로그인사용자($member[mb_name]) 같은 이름일 경우 select에서 제외...
그리고 한번 클릭한 목록은 선택이 안되도록 하고 싶습니다.
*본인 : 이순신
[선택 ▼] - 김유신 [input area ]
- 강감찬
- 세종대왕
- 이순신 <-이부분은 감춰야합니다;;
*1.강감찬 선택
[강감찬▼] [강감찬 ]
*2.김유신 선택
[김유신▼] [강감찬,김유신 ]
*3.다시 강감찬 선택
[김유신▼] [강감찬,김유신,강감찬 ]
위와 같이 같은 이름이 중복으로 들어가는 부분을 수정하고 싶습니다;
$sp = ",";
$options = '<option value="">선택▼</option>';
$queryW = "SELECT mb_name FROM g4_member WHERE mb_4=1 ORDER BY mb_name";
$resultW = mysql_query($queryW);
while ( $rowW = mysql_fetch_assoc($resultW) )
{
$options.= '<option value="'.$rowW['mb_name'].$sp.'">'.$rowW['mb_name'].'</option>';
}
?>
<select id="mb_name" name="mb_name"
onchange="document.getElementsByName('wr_tel')[0].value+=this.value;
check.location.href='check_member.php?check_member='+this.value+'&wr_11=<?=$wr_link1;?>&wr_12=<?=$wr_link2;?>&wr_7=<?=$wr_7;?>&wr_8=<?=$wr_8;?>'">
<?=$options?></select>
<input type="text" id="wr_tel" name="wr_3" value="" style="width:68%; background-color:#FFFF99;" class="tx">
위의 소스에서 보시면
먼저 mb_name이 현재 로그인사용자($member[mb_name]) 같은 이름일 경우 select에서 제외...
그리고 한번 클릭한 목록은 선택이 안되도록 하고 싶습니다.
*본인 : 이순신
[선택 ▼] - 김유신 [input area ]
- 강감찬
- 세종대왕
- 이순신 <-이부분은 감춰야합니다;;
*1.강감찬 선택
[강감찬▼] [강감찬 ]
*2.김유신 선택
[김유신▼] [강감찬,김유신 ]
*3.다시 강감찬 선택
[김유신▼] [강감찬,김유신,강감찬 ]
위와 같이 같은 이름이 중복으로 들어가는 부분을 수정하고 싶습니다;
댓글 전체
전체 소스를 올려주심 좋을것 같구요..
$mb_name = "사용자이름"; 일 경우,
while 구문안에
{
if($mb_name == "$rowW[mb_name]") { // 사용자 이름과 출력자 이름이 같을 경우..
$options = "";
} else { // 같지 않을 경우..
$options = 기존대로 처리;
}
}
이런식으로 하시면 될것 같습니다.
중복 부분은 onchange 부분 중..
value+=this 를
value=this 로 교체.
$mb_name = "사용자이름"; 일 경우,
while 구문안에
{
if($mb_name == "$rowW[mb_name]") { // 사용자 이름과 출력자 이름이 같을 경우..
$options = "";
} else { // 같지 않을 경우..
$options = 기존대로 처리;
}
}
이런식으로 하시면 될것 같습니다.
중복 부분은 onchange 부분 중..
value+=this 를
value=this 로 교체.
지나파파님 답변 감사합니다.
그러나 이 소스는 다중 사용자 체크 소스라고 보시면 됩니다.
member_table에서 mb_4=1인 회원만 불러와
Select 옵션에 자동적으로 나열 됩니다.
이때 자동적으로 불러오는 목록(셀렉트 BOX)에서
본인은 제외를 시키는 것입니다.
$options가 .을 이용해 연속 나열 됩니다;
또한 다중 참석자로 추가하기 때문에 "Value+=this"는 사용해야 합니다.
아마 스크립트에서 Value 값을 자동으로 추가되는 값을 기억해서 넣을때
차단(alert창) 해야할듯 싶습니다.
물론 값 넘어가면서 동일한 이름은 삭제하겠지만, 셀렉트 => 인풋에 값이 자동적으로
넘어가 추가가 되는 부분이라...이때는 onchange 하면 이벤트가 발생 되어야 하구요...
check.location.href='check_member.php?check_member='+this.value+'&wr_11=<?=$wr_link1;?>&wr_12=<?=$wr_link2;?>&wr_7=<?=$wr_7;?>&wr_8=<?=$wr_8;?>'">
이부분은 자바스크립트로 일정일시 중복 체크하는 부분이라 iframe으로 넘긴거라 참고만 하시구요..
그러나 이 소스는 다중 사용자 체크 소스라고 보시면 됩니다.
member_table에서 mb_4=1인 회원만 불러와
Select 옵션에 자동적으로 나열 됩니다.
이때 자동적으로 불러오는 목록(셀렉트 BOX)에서
본인은 제외를 시키는 것입니다.
$options가 .을 이용해 연속 나열 됩니다;
또한 다중 참석자로 추가하기 때문에 "Value+=this"는 사용해야 합니다.
아마 스크립트에서 Value 값을 자동으로 추가되는 값을 기억해서 넣을때
차단(alert창) 해야할듯 싶습니다.
물론 값 넘어가면서 동일한 이름은 삭제하겠지만, 셀렉트 => 인풋에 값이 자동적으로
넘어가 추가가 되는 부분이라...이때는 onchange 하면 이벤트가 발생 되어야 하구요...
check.location.href='check_member.php?check_member='+this.value+'&wr_11=<?=$wr_link1;?>&wr_12=<?=$wr_link2;?>&wr_7=<?=$wr_7;?>&wr_8=<?=$wr_8;?>'">
이부분은 자바스크립트로 일정일시 중복 체크하는 부분이라 iframe으로 넘긴거라 참고만 하시구요..
<select id="mb_name" name="mb_name"
onchange="document.getElementsByName('wr_tel')[0].value+=this.value;
이부분을 우선
<select id="mb_name" name="mb_name"
onchange="javascript:rundata(this.form);"> 으로 변경하시구요
혹 form 테그 밖에 있거나 <form> 테그 없이 작성된경우라면
<select id="mb_name" name="mb_name"
onchange="javascript:rundata(this.value);">
로 변경하시구요
적절한 위치에 (모르겟으면 코드 맨 아래에 추가)
<script language='javascript'>
function rundata(form) { // 역시 <form>테그 없거나 폼테그밖에서 사용된경우라면 function rundata(vals); 로 하시구요
var obj = document.getElementsByName('wr_tel')[0];
var strs = obj.value.split(","); // 구분자를 컴마(,)로 하신것 같으니 이걸로 분배합니다
var isuse = false;
for(var i=0;i<strs.length;i++) {
if(strs[i] == form.mb_name.value) {
//위 부분역시 <form>테그 없거나 <form>테그 밖에서 사용된경우라면
//if(strs[i] == vals) { 로 작성하세요
isuse=true;
break;
}
}
if(isuse) return false; // 혹시 이 구문때문에 페이지가 새로 고쳐지면서 false 라고 출력된다면 그냥 return; 으로 작성하세요
obj.value+=form.mb_name.value; //마찬가지입니다. 폼테그 없거나 밖에서 사용된경우면 +=vals; 입니다.
check.location.href='check_member.php?check_member='+form.mb_name.value+'&wr_11=<?=$wr_link1;?>&wr_12=<?=$wr_link2;?>&wr_7=<?=$wr_7;?>&wr_8=<?=$wr_8;?> //마찬가지겠죠 폼테그 없거나 밖에서 사용된경우면 ='+vals+'.... 가 맞습니다.
}
</script>
이렇게 하면 중복처리 효과를 볼수 있습니다.
onchange="document.getElementsByName('wr_tel')[0].value+=this.value;
이부분을 우선
<select id="mb_name" name="mb_name"
onchange="javascript:rundata(this.form);"> 으로 변경하시구요
혹 form 테그 밖에 있거나 <form> 테그 없이 작성된경우라면
<select id="mb_name" name="mb_name"
onchange="javascript:rundata(this.value);">
로 변경하시구요
적절한 위치에 (모르겟으면 코드 맨 아래에 추가)
<script language='javascript'>
function rundata(form) { // 역시 <form>테그 없거나 폼테그밖에서 사용된경우라면 function rundata(vals); 로 하시구요
var obj = document.getElementsByName('wr_tel')[0];
var strs = obj.value.split(","); // 구분자를 컴마(,)로 하신것 같으니 이걸로 분배합니다
var isuse = false;
for(var i=0;i<strs.length;i++) {
if(strs[i] == form.mb_name.value) {
//위 부분역시 <form>테그 없거나 <form>테그 밖에서 사용된경우라면
//if(strs[i] == vals) { 로 작성하세요
isuse=true;
break;
}
}
if(isuse) return false; // 혹시 이 구문때문에 페이지가 새로 고쳐지면서 false 라고 출력된다면 그냥 return; 으로 작성하세요
obj.value+=form.mb_name.value; //마찬가지입니다. 폼테그 없거나 밖에서 사용된경우면 +=vals; 입니다.
check.location.href='check_member.php?check_member='+form.mb_name.value+'&wr_11=<?=$wr_link1;?>&wr_12=<?=$wr_link2;?>&wr_7=<?=$wr_7;?>&wr_8=<?=$wr_8;?> //마찬가지겠죠 폼테그 없거나 밖에서 사용된경우면 ='+vals+'.... 가 맞습니다.
}
</script>
이렇게 하면 중복처리 효과를 볼수 있습니다.
말씀하신대로 form안에 넣었습니다. 그런데, 중복체크 스크립트는 오류가 없는데, 중복체크를 안합니다.ㅠㅠ
<script language='javascript'>
function rundata(form) {
var obj = document.getElementsByName('wr_name')[0];
var strs = obj.value.split("\n"); // 구분자를 엔터(\n)
var isDupl = true; //중복체크 사용
for(var i=0;i<strs.length;i++) {
if(strs[i].value == strs[i].value) {
//넘어온 배열값중에 중복값이 존재해면
isDupl = false;
break;
}
}
if(isDupl){
obj.value+=form.mb_name.value;
}
}
</script>
이렇게 수정해 보는데도 안되네요...
mb_name은 textarea로 수정하였습니다.
form.mb_name[i].value를 사용해야할거 같은데요..ㅠㅠ
<script language='javascript'>
function rundata(form) {
var obj = document.getElementsByName('wr_name')[0];
var strs = obj.value.split("\n"); // 구분자를 엔터(\n)
var isDupl = true; //중복체크 사용
for(var i=0;i<strs.length;i++) {
if(strs[i].value == strs[i].value) {
//넘어온 배열값중에 중복값이 존재해면
isDupl = false;
break;
}
}
if(isDupl){
obj.value+=form.mb_name.value;
}
}
</script>
이렇게 수정해 보는데도 안되네요...
mb_name은 textarea로 수정하였습니다.
form.mb_name[i].value를 사용해야할거 같은데요..ㅠㅠ