폼메일+라디오버튼
라디오버튼을 포함한 폼메일 전송을 하고싶습니다.
트리플님이 올려주신 아래의 폼메일에서 라디오박스를 추가하였습니다.
https://sir.kr/g5_skin/20940?sfl=wr_subject%7C%7Cwr_content&stx=%ED%8F%BC%EB%A9%94%EC%9D%BC#c_28795">https://sir.kr/g5_skin/20940?sfl=wr_subject%7C%7Cwr_content&stx=%ED%8F%BC%EB%A9%94%EC%9D%BC#c_28795
formmail/js/contact.js
formmail/php/contact.php
파일에 텍스트박스 넣듯 값을 추가하였으나 보여지지가 않습니다.
formmail.php에서
</p>
<p> <div class="checks">
<input type="radio" id="ex_rd" name="ex_rds" value="유">
<label for="ex_rd">유</label>
<input type="radio" id="ex_rd2" name="ex_rds" value="무">
<label for="ex_rd2">무</label>
</div>
contact.js에서
</p>
<p> // @CONTACT FORM - TRANSLATE OR EDIT
_subject_required = 'Subject is Required!',
_agree_name = 'Agree is Required!',
_email_name = 'Name is Required!',
_email_required = 'Email is Required!',
_phone_required = 'Phone is Required!',
_email_message = 'Message is Required!',
_email_location = 'Location is Required!',
_email_ex_rds = 'Select is Required!',
_email_all = 'Please complete all fields!',
_email_invalid = 'Invalid Email!',
_email_sent = '<strong>메세지가 전달 되었습니다.</strong>';</p>
<p>
/** CONTACT FORM
*************************************************** **/
jQuery("#contact_submit").bind("click", function(e) {
e.preventDefault();</p>
<p> var agree = jQuery("#agree").is(':checked'), // required
contact_subject = jQuery("#contact_subject").val(), // required
contact_name = jQuery("#contact_name").val(), // required
contact_email = jQuery("#contact_email").val(), // required
contact_phone = jQuery("#contact_phone").val(), // required
contact_location= jQuery("#contact_location").val(), // required
contact_ex_rds = jQuery("#contact_ex_rds").val(), // required
contact_message = jQuery("#contact_message").val(), // required
_action = jQuery("#contactForm").attr('action'), // form action URL
_method = jQuery("#contactForm").attr('method'), // form method
_err = false; // status</p>
<p> // Remove error tooltips
//jQuery("#contactForm span.tooltip_error").remove();</p>
<p> // Agree Check
if(!agree) {
jQuery("#alertErrResponse").empty().append(_agree_name);
jQuery("#alertErr").show();
alert('개인정보 수집 및 이용에 관한 동의해주세요.');
return false;
}</p>
<p> // Name Check
if(contact_name == '') {
jQuery("#alertErrResponse").empty().append(_email_name);
jQuery("#alertErr").show();</p>
<p> return false;
}</p>
<p> // Email Check
if(contact_email == '') {
jQuery("#alertErrResponse").empty().append(_email_required);
jQuery("#alertErr").show();
return false;
}</p>
<p> // Phone Check
if(contact_phone == '') {
jQuery("#alertErrResponse").empty().append(_phone_required);
jQuery("#alertErr").show();
return false;
}</p>
<p> // Subject Check
if(contact_subject == '') {
jQuery("#alertErrResponse").empty().append(_subject_required);
jQuery("#alertErr").show();
return false;
}
// Subject Check
if(contact_location == '') {
jQuery("#alertErrResponse").empty().append(_location_required);
jQuery("#alertErr").show();
return false;
}
// Subject Check
if(contact_ex_rds == '') {
jQuery("#alertErrResponse").empty().append(_ex_rds_required);
jQuery("#alertErr").show();
return false;
}</p>
<p> // Comment Check
if(contact_message == '') {
jQuery("#alertErrResponse").empty().append(_email_message);
jQuery("#alertErr").show();
return false;
}</p>
<p>
// SEND MAIL VIA AJAX
$.ajax({
url: _action,
data: {ajax:"true", action:'email_send', contact_name:contact_name, contact_email:contact_email, contact_phone:contact_phone, contact_location:contact_location, contact_ex_rds:contact_ex_rds, contact_message:contact_message},
type: _method,
error: function(XMLHttpRequest, textStatus, errorThrown) {</p>
<p> alert('Server Internal Error'); // usualy on headers 404</p>
<p> },</p>
<p> success: function(data) {
data = data.trim(); // remove output spaces</p>
<p>
// PHP RETURN: Mandatory Fields
if(data == '_required_') {
jQuery("#alertErrResponse").empty().append(_email_all);
jQuery("#alertErr").show();
} else</p>
<p> // PHP RETURN: INVALID EMAIL
if(data == '_invalid_email_') {
jQuery("#alertErrResponse").empty().append(_email_invalid);
jQuery("#alertErr").show();
} else</p>
<p> // VALID EMAIL
if(data == '_sent_ok_') {</p>
<p> // hide error warning if visible
jQuery("#alertErr").hide();</p>
<p> jQuery("#alertOkResponse").empty().append(_email_sent);
jQuery("#alertOk").show();</p>
<p> // reset form
jQuery("#contact_name, #contact_email, #contact_phone, #contact_location, #contact_ex_rds #contact_message").val('');</p>
<p> } else {</p>
<p> // PHPMAILER ERROR
alert(data); </p>
<p> }
}
});</p>
<p> });</p>
<p> /* ========================================================================
* Bootstrap: alert.js v3.2.0
* <a href="http://getbootstrap.com/javascript/#alerts" target="_blank" rel="noopener noreferrer">http://getbootstrap.com/javascript/#alerts</a>
* ========================================================================
* Copyright 2011-2014 Twitter, Inc.
* Licensed under MIT (<a href="https://github.com/twbs/bootstrap/blob/master/LICENSE)" target="_blank" rel="noopener noreferrer">https://github.com/twbs/bootstrap/blob/master/LICENSE)</a>
* ======================================================================== */</p>
<p> +function ($) {
'use strict';</p>
<p> // ALERT CLASS DEFINITION
// ======================</p>
<p> var dismiss = '[data-dismiss="alert"]'
var Alert = function (el) {
$(el).on('click', dismiss, this.close)
}</p>
<p> Alert.VERSION = '3.2.0'</p>
<p> Alert.prototype.close = function (e) {
var $this = $(this)
var selector = $this.attr('data-target')</p>
<p> if (!selector) {
selector = $this.attr('href')
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
}</p>
<p> var $parent = $(selector)</p>
<p> if (e) e.preventDefault()</p>
<p> if (!$parent.length) {
$parent = $this.hasClass('alert') ? $this : $this.parent()
}</p>
<p> $parent.trigger(e = $.Event('close.bs.alert'))</p>
<p> if (e.isDefaultPrevented()) return</p>
<p> $parent.removeClass('in')</p>
<p> function removeElement() {
// detach from parent, fire event then clean up data
$parent.detach().trigger('closed.bs.alert').remove()
}</p>
<p> $.support.transition && $parent.hasClass('fade') ?
$parent
.one('bsTransitionEnd', removeElement)
.emulateTransitionEnd(150) :
removeElement()
}</p>
<p>
// ALERT PLUGIN DEFINITION
// =======================</p>
<p> function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.alert')</p>
<p> if (!data) $this.data('bs.alert', (data = new Alert(this)))
if (typeof option == 'string') data[option].call($this)
})
}</p>
<p> var old = $.fn.alert</p>
<p> $.fn.alert = Plugin
$.fn.alert.Constructor = Alert</p>
<p>
// ALERT NO CONFLICT
// =================</p>
<p> $.fn.alert.noConflict = function () {
$.fn.alert = old
return this
}</p>
<p>
// ALERT DATA-API
// ==============</p>
<p> $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)</p>
<p> }(jQuery);</p>
<p>
contact.php에서
</p>
<p> // @CONTACT FORM - TRANSLATE OR EDIT
_subject_required = 'Subject is Required!',
_agree_name = 'Agree is Required!',
_email_name = 'Name is Required!',
_email_required = 'Email is Required!',
_phone_required = 'Phone is Required!',
_email_message = 'Message is Required!',
_email_location = 'Location is Required!',
_email_ex_rds = 'Select is Required!',
_email_all = 'Please complete all fields!',
_email_invalid = 'Invalid Email!',
_email_sent = '<strong>메세지가 전달 되었습니다.</strong>';</p>
<p>
/** CONTACT FORM
*************************************************** **/
jQuery("#contact_submit").bind("click", function(e) {
e.preventDefault();</p>
<p> var agree = jQuery("#agree").is(':checked'), // required
contact_subject = jQuery("#contact_subject").val(), // required
contact_name = jQuery("#contact_name").val(), // required
contact_email = jQuery("#contact_email").val(), // required
contact_phone = jQuery("#contact_phone").val(), // required
contact_location= jQuery("#contact_location").val(), // required
contact_ex_rds = jQuery("#contact_ex_rds").val(), // required
contact_message = jQuery("#contact_message").val(), // required
_action = jQuery("#contactForm").attr('action'), // form action URL
_method = jQuery("#contactForm").attr('method'), // form method
_err = false; // status</p>
<p> // Remove error tooltips
//jQuery("#contactForm span.tooltip_error").remove();</p>
<p> // Agree Check
if(!agree) {
jQuery("#alertErrResponse").empty().append(_agree_name);
jQuery("#alertErr").show();
alert('개인정보 수집 및 이용에 관한 동의해주세요.');
return false;
}</p>
<p> // Name Check
if(contact_name == '') {
jQuery("#alertErrResponse").empty().append(_email_name);
jQuery("#alertErr").show();</p>
<p> return false;
}</p>
<p> // Email Check
if(contact_email == '') {
jQuery("#alertErrResponse").empty().append(_email_required);
jQuery("#alertErr").show();
return false;
}</p>
<p> // Phone Check
if(contact_phone == '') {
jQuery("#alertErrResponse").empty().append(_phone_required);
jQuery("#alertErr").show();
return false;
}</p>
<p> // Subject Check
if(contact_subject == '') {
jQuery("#alertErrResponse").empty().append(_subject_required);
jQuery("#alertErr").show();
return false;
}
// Subject Check
if(contact_location == '') {
jQuery("#alertErrResponse").empty().append(_location_required);
jQuery("#alertErr").show();
return false;
}
// Subject Check
if(contact_ex_rds == '') {
jQuery("#alertErrResponse").empty().append(_ex_rds_required);
jQuery("#alertErr").show();
return false;
}</p>
<p> // Comment Check
if(contact_message == '') {
jQuery("#alertErrResponse").empty().append(_email_message);
jQuery("#alertErr").show();
return false;
}</p>
<p>
// SEND MAIL VIA AJAX
$.ajax({
url: _action,
data: {ajax:"true", action:'email_send', contact_name:contact_name, contact_email:contact_email, contact_phone:contact_phone, contact_location:contact_location, contact_ex_rds:contact_ex_rds, contact_message:contact_message},
type: _method,
error: function(XMLHttpRequest, textStatus, errorThrown) {</p>
<p> alert('Server Internal Error'); // usualy on headers 404</p>
<p> },</p>
<p> success: function(data) {
data = data.trim(); // remove output spaces</p>
<p>
// PHP RETURN: Mandatory Fields
if(data == '_required_') {
jQuery("#alertErrResponse").empty().append(_email_all);
jQuery("#alertErr").show();
} else</p>
<p> // PHP RETURN: INVALID EMAIL
if(data == '_invalid_email_') {
jQuery("#alertErrResponse").empty().append(_email_invalid);
jQuery("#alertErr").show();
} else</p>
<p> // VALID EMAIL
if(data == '_sent_ok_') {</p>
<p> // hide error warning if visible
jQuery("#alertErr").hide();</p>
<p> jQuery("#alertOkResponse").empty().append(_email_sent);
jQuery("#alertOk").show();</p>
<p> // reset form
jQuery("#contact_name, #contact_email, #contact_phone, #contact_location, #contact_ex_rds #contact_message").val('');</p>
<p> } else {</p>
<p> // PHPMAILER ERROR
alert(data); </p>
<p> }
}
});</p>
<p> });</p>
<p> /* ========================================================================
* Bootstrap: alert.js v3.2.0
* <a href="http://getbootstrap.com/javascript/#alerts" target="_blank" rel="noopener noreferrer">http://getbootstrap.com/javascript/#alerts</a>
* ========================================================================
* Copyright 2011-2014 Twitter, Inc.
* Licensed under MIT (<a href="https://github.com/twbs/bootstrap/blob/master/LICENSE)" target="_blank" rel="noopener noreferrer">https://github.com/twbs/bootstrap/blob/master/LICENSE)</a>
* ======================================================================== */</p>
<p> +function ($) {
'use strict';</p>
<p> // ALERT CLASS DEFINITION
// ======================</p>
<p> var dismiss = '[data-dismiss="alert"]'
var Alert = function (el) {
$(el).on('click', dismiss, this.close)
}</p>
<p> Alert.VERSION = '3.2.0'</p>
<p> Alert.prototype.close = function (e) {
var $this = $(this)
var selector = $this.attr('data-target')</p>
<p> if (!selector) {
selector = $this.attr('href')
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
}</p>
<p> var $parent = $(selector)</p>
<p> if (e) e.preventDefault()</p>
<p> if (!$parent.length) {
$parent = $this.hasClass('alert') ? $this : $this.parent()
}</p>
<p> $parent.trigger(e = $.Event('close.bs.alert'))</p>
<p> if (e.isDefaultPrevented()) return</p>
<p> $parent.removeClass('in')</p>
<p> function removeElement() {
// detach from parent, fire event then clean up data
$parent.detach().trigger('closed.bs.alert').remove()
}</p>
<p> $.support.transition && $parent.hasClass('fade') ?
$parent
.one('bsTransitionEnd', removeElement)
.emulateTransitionEnd(150) :
removeElement()
}</p>
<p>
// ALERT PLUGIN DEFINITION
// =======================</p>
<p> function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.alert')</p>
<p> if (!data) $this.data('bs.alert', (data = new Alert(this)))
if (typeof option == 'string') data[option].call($this)
})
}</p>
<p> var old = $.fn.alert</p>
<p> $.fn.alert = Plugin
$.fn.alert.Constructor = Alert</p>
<p>
// ALERT NO CONFLICT
// =================</p>
<p> $.fn.alert.noConflict = function () {
$.fn.alert = old
return this
}</p>
<p>
// ALERT DATA-API
// ==============</p>
<p> $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)</p>
<p> }(jQuery);</p>
<p>
를 추가했습니다.
선택된 값만 가져오려면 어떻게 추가해야할까요?
코딩을 전혀 못하다보니 바꾸는것도 어렵네요 ㅠㅠ
고수님들 고견부탁드립니다.
답변 2개
id="ex_rd" name="ex_rds" => id="ex_rd" name="ex_rd"
<b>유무:</b> {$array['contact_ex_rd']}
=> <b>유무:</b> {$array['ex_rd']}
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
재가 질문을 잘못 이해햇을수 있습니다.
ex_rd 라디오로 전달 해서 받고 싶은 것이라면?
-> 그 폼메일의 결과를 실행하는 곳에서 ex_rd을 인식시켜서 실행 하셔야 지요
답변에 대한 댓글 1개
컴맹인지라 확실한 문제의 위치를 찝어 말씀드리지 못해서 질문을 잘 이해하기 힘드실 수 있습니다. ㅠㅠ
라디오버튼을 추가시 텍스트필드와 다른 추가 설정 부분이 있나요?
contact.php 파일 내 메일 수신 부분에 삽입한 부분입니다.
[code]
$array['contact_ex_rd'] = isset($_REQUEST['contact_ex_rd']) ? strip_tags(trim($_REQUEST['contact_location'])) : '';
[/code]
[code]
$mail_body = "
<b>Date:</b> {$date} <br>
<b>Name:</b> {$array['contact_name']} <br>
<b>Email:</b> {$array['contact_email']} <br>
{$PHONE}
<b>유무:</b> {$array['contact_ex_rd']} <br>
<b>location:</b> {$array['contact_location']} <br>
<b>Message:</b> {$array['contact_message']} <br>
--------------------------------------------------- <br>
IP: {$ip}
";
[/code]
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
js 파일 내 요청되는 값에
[code]
contact_ex_rds = jQuery("#ex_rd").is(':checked')?jQuery("#ex_rd").val():jQuery("#ex_rd2").val(),
[/code]
체크되는 값을 불러오도록 하였습니다.
이걸 제대로 설명할줄을 몰라서 엄청 헤맷네요.
답변 감사합니다.