묻고답하기
이메일부분 셀렉트박스로 변경할려는데 너무 어렵네요 고수님의 조언부탁드립니다.
2020.05.31 11:20
안녕하세요 xe1 을 사용중인데
이메일 부분을 셀렉트박스로 변경하고 싶은데 아래와 같이 변경하고 싶은데
도저희 어디서 소스를 변경해야될지 막막해서 혹시 고수님들의 조언 부탁드립니다.
<script language="javascript">
function changeSelect(s,no){
form = document.MemberForm;
sel = s[s.selectedIndex].value;
dis = 1;
if(sel=="user"){
sel = "";
dis = 0;
}
form.EmailDomain1.value = sel;
form.EmailDomain1.disabled = dis;
}
</script>
<form name="MemberForm" method="post"
action="info.asp" onsubmit="return false;">
<input type="Hidden" name="EditValue1" />
<INPUT type="text" name="EmailID1" size="8" />
@
<INPUT type="text" name="EmailDomain1" size="8" />
<SELECT name="SelEmailDomain1" onchange="changeSelect(this,1);">
<option value="">메일주소선택</option>
<option value='hanafos.com'>하나포스닷컴</option>
<option value='naver.com'>네이버</option>
<option value='paran.com'>파란</option>
<option value='empal.com'>엠파스</option>
<option value='nate.com'>네이트</option>
<option value='yahoo.co.kr'>야후코리아</option>
<option value='dreamwiz.com'>드림위즈</option>
<option value='freechal.com'>프리챌</option>
<option value='hotmail.com'>핫메일</option>
<option value='korea.com'>코리아닷컴</option>
<option value='chollian.net'>천리안</option>
<option value='hanmail.net'>한메일</option>
<option value="user">직접입력</option>
</SELECT>
</form>
여기에서 {$val->getFormHTML()} 을
<input type="text" id="extra_vars{$val->idx}" name="extra_vars{$val->idx}" value="{$val->value}"> @
<input type="text" id="extra_vars{$val->idx}" name="extra_vars{$val->idx}" value="{$val->value}">
넣어으면 이름도 똑같이 input 박스가 두개 생겨서 어렵네요
혹시 방법을 아시면 알려주시면 감사드립니다.
XE 에서는 이메일을 두개로 나눠 저장하지 않고
하나의 칼럼에 저장시키기에, input 을 두개로 쓰면 안 됩니다
그렇다고 input name 을 배열형태 로 써도 안 됩니다
배열형태로 쓰면 XE 자체에서 앞의값|@|뒤의값 으로 저장해버리거든요
방법은..
스킨에서, 실제 hidden 으로 된 이메일저장 input 을 하나 만들고
입력받을 이메일 input 을 2개 배치한 후 ( 단, name 값은 실제 이메일입력 칼럼으로 쓰면 안 됩니다 )
그 폼의 값이 바뀔때 script 로 그 두개의 input 값을 가져와 hidden 처리한 칼럼에 입력되도록 구현을 해야겠죠
( 즉, 눈에 보이는 화면과, 실제 전달되는 화면을 다르게 해서 연계해야겠죠. 이런건 꼭 XE 가 아니여도 구글링하면 유사 소스가 있을 수도 있습니다. )
( 물론 이렇게 해도 요소검사등으로 이메일주소를 조작할 수는 있기에.. 단순 편의가 아니라 반드시 저 이메일주소만 쓰게 하려는 거면 이걸로는 정확한 차단은 힘들죠 )
이런형태를 자주 쓴다면
사용자정의 형태를 하나 새로 추가하시는 방법도 있고 ( 이메일을 나눠서 받는 전용 사용자정의 )
아니면 해당값을 실제 저장하는 모듈을 수정해서
배열로 받은 값을 str_replace 로 해서 |@| 를 이메일구분자인 @ 로 전환시키는 방법도 있고요
그런데, 지금 설명드린걸로 어려우면...
외주로 제작의뢰를 하시는게 더 빠를 수도 있습니다.