- [CUSTOMER] [EXPORT] 버튼 수정
- [LOGIN] 엔터로도 로그인
- [EXPORT] Customer Export : Acc 추가
- [EXPENSE] 화면 줄일 때 버튼, 서머리 화면에 다 안 들어가는 문제 수정
- [DRIVER] DRIVER 리스트에 TYPE 추가
This commit is contained in:
Kang Lee 2026-07-09 09:25:39 -04:00
parent 139113d1cf
commit 3c82cdd594
9 changed files with 184 additions and 128 deletions

View File

@ -1385,6 +1385,12 @@ a.txt-logout:hover{
border: 0px;
}
/* 첫 줄(버튼 줄) 테두리 제거 + 칸 사이 여백 */
.form-config-search table.td-search tr:first-child td{
border: 0px;
padding: 10px 8px;
}
.form-config-search table.td-search .td-title{
min-width: 100px;
@ -2335,9 +2341,13 @@ tr.status-X {
============================ */
.radio-segment {
display: flex;
align-items: center;
gap: 5px;
height: 40px;
border: 1px solid #ccc;
border-radius: 10px;
overflow: hidden;
border-radius: 999px; /* 바깥 테두리 알약 모양 */
padding: 5px; /* 상하좌우 여백 균등 (gap과 동일) */
box-sizing: border-box;
width: 100%;
}
@ -2358,11 +2368,12 @@ tr.status-X {
text-align: center;
align-items: center;
justify-content: center;
padding: 8px 0;
padding: 5px 16px;
background: #e7e7e7;
color: #333;
font-weight: 500;
height: 100%;
border-radius: 999px; /* 알약 모양 */
transition: background 0.45s ease;
}
.radio-segment input[type="radio"]:checked + span {
@ -2370,13 +2381,12 @@ tr.status-X {
color: #333;
}
/* horizontal radius */
.radio-segment label:first-child span {
border-radius: 5px 0 0 5px;
/* 마우스 오버 */
.radio-segment span:hover {
background: #f0f0f0;
}
.radio-segment label:last-child span {
border-radius: 0 5px 5px 0;
.radio-segment input[type="radio"]:checked + span:hover {
background: #fff0b8;
}
/* check box */
@ -2450,18 +2460,20 @@ tr.status-X {
.radio-segment {
flex-direction: column;
width: 100%;
height: auto;
gap: 6px; /* 세로로 쌓일 때 버튼 사이 간격 */
border-radius: 16px; /* 세로일 땐 살짝만 둥글게 */
padding: 8px;
}
.radio-segment label {
width: 100%;
}
.radio-segment label:first-child span {
border-radius: 5px 5px 0 0;
}
.radio-segment label:last-child span {
border-radius: 0 0 5px 5px;
/* 세로일 때 각 버튼은 살짝 둥근 알약 유지 */
.radio-segment span {
border-radius: 20px;
padding: 8px 16px;
}
}

View File

@ -384,7 +384,7 @@ $(document).ready(function(){
</td>
<td style="text-align:right;">
<div class="cstatus-segment">
<div class="radio-segment">
<label>
<input type="radio" name="cstatus" value="A" <?=($cstatus == "A")?"checked":"";?>>
<span>&nbsp;Active&nbsp;</span>
@ -403,7 +403,7 @@ $(document).ready(function(){
</td>
<td style="text-align:left; padding-left:10px;">
<div class="cistop-segment">
<div class="radio-segment">
<label>
<input type="radio" name="cistop" value="A" <?=($cistop == "A")?"checked":"";?>>
<span>&nbsp;Top&nbsp;</span>
@ -514,80 +514,4 @@ $(document).ready(function(){
<!-- End of Modal -->
<style>
.cstatus-segment,
.cistop-segment {
display: flex; /* inline-flex 말고 flex 로 */
border: 1px solid #ccc;
border-radius: 10px;
overflow: hidden;
}
/* 라벨 전체가 버튼처럼 동작 + 같은 너비 */
.cstatus-segment label,
.cistop-segment label {
margin: 0;
cursor: pointer;
flex: 1 1 0; /* 3개 버튼을 동일 너비로 나눔 */
}
.cstatus-segment input[type="radio"],
.cistop-segment input[type="radio"] {
display: none;
}
.cstatus-segment span,
.cistop-segment span {
display: block;
text-align: center;
padding: 8px 0; /* 좌우 padding 빼고, 너비는 flex가 담당 */
background: #e7e7e7;
color: #333;
font-weight: 500;
}
.cstatus-segment input[type="radio"]:checked + span,
.cistop-segment input[type="radio"]:checked + span {
background: #ffca1a;
color: #333;
}
/* 가로일 때 border-radius (좌우) */
.cstatus-segment label:first-child span,
.cistop-segment label:first-child span {
border-radius: 5px 0 0 5px;
}
.cstatus-segment label:last-child span,
.cistop-segment label:last-child span {
border-radius: 0 5px 5px 0;
}
/* 모바일. 너비는 나중에 조절 */
@media (max-width: 768px) {
.cstatus-segment,
.cistop-segment {
flex-direction: column; /* 세로로 쌓기 */
width: 100%; /* td 안에서 꽉 차게 */
}
.cstatus-segment label,
.cistop-segment label {
flex: 1 0 auto;
width: 100%; /* 각 버튼이 컨테이너 전체 너비 사용 */
}
/* 세로일 때 border-radius (위/아래) 다시 정의 */
.cstatus-segment label:first-child span,
.cistop-segment label:first-child span {
border-radius: 5px 5px 0 0;
}
.cstatus-segment label:last-child span,
.cistop-segment label:last-child span {
border-radius: 0 0 5px 5px;
}
}
</style>
<!-- 세그먼트 버튼(cstatus/cistop) 스타일은 assets/css/table-style.css 이동됨 -->

View File

@ -1,9 +1,9 @@
<?
// Level 5 이하만 사용 가능
// Level 5 <EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
$func->checkLevelModal(5);
// Delete 기능 제한 (Admin : 1 만 가능)
// Delete <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (Admin : 1 <20><> <20><><EFBFBD><EFBFBD>)
$permit = array("1");
if (in_array($_SESSION['ss_LEVEL'], $permit)) {
$setTag = "ENABLED";
@ -46,11 +46,11 @@ $query = "SELECT COUNT(dr_uid) FROM tbl_driver
$total_count=$jdb->rQuery($query, "record query error");
//echo "<br><br><br><br><br>[$total_count][$query]<br>";
//페이징변수설정
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>¡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(!$page) $page = 1;
if(!$list_count) $list_count = $INIT_PAGECNT; //출력리스트 갯수
if(!$page_count) $page_count = $INIT_PAGEVIEWCNT; //출력페이지 갯수
if(!$list_count) $list_count = $INIT_PAGECNT; //<EFBFBD><EFBFBD>¸<EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
if(!$page_count) $page_count = $INIT_PAGEVIEWCNT; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
$list_number = $total_count - (($page-1)*$list_count);
$start_number = $list_count * ($page-1);
@ -85,6 +85,15 @@ while($list=mysqli_fetch_array($result, MYSQLI_ASSOC)) {
$dr_lastnameSTR = str_replace("\\", "", $dr_lastname);
$dr_initialSTR = str_replace("\\", "", $dr_initial);
$dr_statusSTR = $arrStatus[$dr_status];
// Display DR_TYPE (use $arrType mapping array if it exists, otherwise show raw value)
if (isset($dr_type) && isset($arrType) && is_array($arrType) && isset($arrType[$dr_type])) {
$dr_typeSTR = $arrType[$dr_type];
} else if (isset($dr_type)) {
$dr_typeSTR = $dr_type;
} else {
$dr_typeSTR = "";
}
//$qry_driver = "SELECT m_firstname, m_lastname FROM tbl_member WHERE dr_uid = '$c_driveruid' ";
//$rt_driver = $jdb->fQuery($qry_driver, "fetch query error");
@ -103,9 +112,10 @@ while($list=mysqli_fetch_array($result, MYSQLI_ASSOC)) {
<tr>
<td>$list_number</td>
<td><a onclick=\"#\" class=\"modifyMember\" data-toggle=\"modal\" data-target=\"#myModalMemberInfo\" data-id=\"$dr_uid\" style=\"cursor:pointer;cursor:hand;\"><b style=\"customer-info-detail\">$dr_initialSTR</b></a></td>
<td>$dr_firstnameSTR</td>
<td>$dr_lastnameSTR</td>
<td><a onclick=\"#\" class=\"modifyMember\" data-toggle=\"modal\" data-target=\"#myModalMemberInfo\" data-id=\"$dr_uid\" style=\"cursor:pointer;cursor:hand;color:inherit;text-decoration:none;\">$dr_firstnameSTR</a></td>
<td><a onclick=\"#\" class=\"modifyMember\" data-toggle=\"modal\" data-target=\"#myModalMemberInfo\" data-id=\"$dr_uid\" style=\"cursor:pointer;cursor:hand;color:inherit;text-decoration:none;\">$dr_lastnameSTR</a></td>
<td>$dr_cellSTR</td>
<td>$dr_typeSTR </td>
<td>$dr_statusSTR </td>
<td>$OPTIONstr</td>
</tr>
@ -483,14 +493,15 @@ $(document).ready(function(){
<div class="wrap-overflow customer-info">
<table class="tb-list">
<table class="tb-list" style="table-layout:fixed; width:100%;">
<tr>
<th>No</th>
<th class="td-restaurant">Initial</th>
<th class="td-restaurant">First Name</th>
<th class="td-restaurant">Last Name</th>
<th class="th-width-phone">Cell</th>
<th>Status</th>
<th class="td-restaurant" style="width:14%;">Initial</th>
<th class="td-restaurant" style="width:14%;">First Name</th>
<th class="td-restaurant" style="width:14%;">Last Name</th>
<th class="th-width-phone" style="width:14%;">Cell</th>
<th style="width:14%;">Type</th>
<th style="width:14%;">Status</th>
<th>Option</th>
</tr>
@ -732,4 +743,4 @@ $(document).ready(function(){
select('#add-acct-staff-modal #acct-staff-type').value = event.relatedTarget.getAttribute('data-add-acct-staff-type')
})
</script>
</script>

View File

@ -10,7 +10,7 @@ $func->checkLevelModal(7);
$customer_cnt = 1;
$customerSTR = "<tr>";
foreach ($customerArray AS $key=>$value)
foreach ($customerArray AS $key=>$value)
{
//echo "[$key][$value]"; => [0][Waiting][1][Confirmed][E][Declined]...
@ -50,6 +50,10 @@ $(document).ready(function(){
presetPL.forEach(col => $('#customer_'+col).prop('checked', true));
}
if(type == "ACC"){
presetACC.forEach(col => $('#customer_'+col).prop('checked', true));
}
if(type == "ALL"){
$('#checkboxcustomer input:checkbox:not(:disabled)').prop('checked', true);
}
@ -76,6 +80,8 @@ $(document).ready(function(){
const presetCS = <?=json_encode(array_keys($customerArray_cs))?>;
const presetPL = <?=json_encode(array_keys($customerArray_pl))?>;
const presetACC = <?=json_encode(array_keys($customerArray_acc))?>;
</script>
@ -117,6 +123,7 @@ const presetPL = <?=json_encode(array_keys($customerArray_pl))?>;
<div class="radio-segment" style="margin:4px;">
<label><input type="radio" name="columnPreset" value="CS"><span>CS</span></label>
<label><input type="radio" name="columnPreset" value="PL"><span>PL</span></label>
<label><input type="radio" name="columnPreset" value="ACC"><span>ACC</span></label>
<label><input type="radio" name="columnPreset" value="ALL" checked><span>ALL</span></label>
<label><input type="radio" name="columnPreset" value="CLEAR"><span>Clear</span></label>
</div>

View File

@ -337,6 +337,39 @@ addLog("add", "EXPENSE LIST", "VIEW", $lguserid, "report_expense", $lgno);
.sumcard:hover{ background:#f3f7f4 !important; box-shadow:0 2px 10px rgba(16,24,40,0.10); }
.sumcard-strong:hover{ background:#e4efe7 !important; box-shadow:0 2px 10px rgba(46,83,64,0.16); }
.sumcard-gas:hover{ background:#fdecd9 !important; box-shadow:0 2px 10px rgba(245,130,31,0.20); }
/* ===== 반응형 검색 폼 (원본 table/td/button 태그·클래스 그대로 유지, CSS로만 좁을 때 줄바꿈) ===== */
/* 넓은 화면: 원본과 완전히 동일 (table-search-customer-2 기본 스타일 그대로) */
@media (max-width:900px){
/* 좁아지면 table을 block으로 바꿔 각 셀이 세로로 쌓이게 함 */
.exp-search-table, .exp-search-table tbody, .exp-search-table tr{
display:block; width:100%;
}
.exp-search-table td{
display:block; width:100% !important; white-space:normal !important;
padding-left:0 !important; text-align:left !important;
box-sizing:border-box; margin-bottom:8px;
}
.exp-search-table td:last-child{ margin-bottom:0; }
.exp-search-table .qbtn{ margin-bottom:6px; }
}
/* ===== 반응형 요약 카드 (넓으면 연산기호 포함 한 줄, 좁으면 접힘) ===== */
.sumcard-wrap{ width:100%; }
/* 기본: flex 한 줄 + 연산기호 표시 */
.sumcard-row{ display:flex; gap:14px; align-items:center; justify-content:flex-start; flex-wrap:nowrap; }
/* JS가 넘침 감지 시: grid로 접히고 연산기호 숨김 */
.sumcard-row.is-wrapped{
display:grid;
grid-template-columns:repeat(auto-fill, minmax(172px, 1fr));
align-items:stretch;
justify-content:start;
}
.sumcard-row.is-wrapped .op-sign{ display:none !important; }
.sumcard-row.is-wrapped .sumcard{ width:auto !important; }
@media (max-width:560px){
.sumcard-row.is-wrapped{ grid-template-columns:repeat(auto-fill, minmax(140px, 1fr)); }
}
</style>
<?php /* 검색 폼은 아래 요약 영역 오른쪽으로 이동됨 */ ?>
@ -410,6 +443,23 @@ addLog("add", "EXPENSE LIST", "VIEW", $lguserid, "report_expense", $lgno);
}
})();
})();
// ===== 카드 넘침 감지: 한 줄에 안 들어가면 grid로 접고 연산기호 숨김 =====
(function(){
var row = document.querySelector('.sumcard-row');
if(!row) return;
function checkWrap(){
row.classList.remove('is-wrapped');
if(row.scrollWidth > row.clientWidth + 1){
row.classList.add('is-wrapped');
}
}
checkWrap();
var t;
window.addEventListener('resize', function(){ clearTimeout(t); t=setTimeout(checkWrap, 80); });
setTimeout(checkWrap, 200);
window.addEventListener('load', checkWrap);
})();
});
</script>
@ -451,15 +501,15 @@ addLog("add", "EXPENSE LIST", "VIEW", $lguserid, "report_expense", $lgno);
} else {
$inner = $s;
}
echo '<div style="flex:0 0 auto; width:'.$w.'; align-self:center; display:flex; align-items:center; justify-content:center; height:132px; font-size:'.$size.'; color:'.$color.'; font-weight:600;">'.$inner.'</div>';
echo '<div class="op-sign" style="flex:0 0 auto; width:'.$w.'; align-self:center; display:flex; align-items:center; justify-content:center; height:132px; font-size:'.$size.'; color:'.$color.'; font-weight:600;">'.$inner.'</div>';
}
?>
<!-- 검색 (원본 형태) -->
<!-- 검색 (원본 table 구조 그대로 · CSS로만 반응형 처리) -->
<form method="post" name="form2" id="form2" action="<?=$_SERVER["PHP_SELF"]?>">
<input type="hidden" name="view" value="report_expense">
<table class="table-search-customer-2" style="width:100%; margin-left:0;">
<table class="table-search-customer-2 exp-search-table" style="width:100%; margin-left:0;">
<tr>
<td class="td-title" style="width:1%; white-space:nowrap;">
<button type="button" class="qbtn" data-range="today">Today</button>
@ -506,12 +556,11 @@ addLog("add", "EXPENSE LIST", "VIEW", $lguserid, "report_expense", $lgno);
<span style="font-size:12px; letter-spacing:0.04em; color:#9aa0a6;">PERIOD &nbsp;·&nbsp; <?=$periodLabel?></span>
</div>
<!-- 카드 섹션 전체를 가운데 정렬: 안쪽은 고정폭 기준으로 정렬 일치 -->
<div style="display:flex; justify-content:center;">
<div style="display:inline-block;">
<!-- 카드 섹션 래퍼 -->
<div class="sumcard-wrap">
<!-- 가로 카드 (연산자 포함) -->
<div style="display:flex; gap:14px; align-items:center; justify-content:flex-start; flex-wrap:nowrap;">
<!-- 카드 (넓으면 연산기호 표시, 좁으면 grid로 접히며 숨김) -->
<div class="sumcard-row">
<?php sumCard('OPENING BALANCE', $getOPENINGSUM); ?>
<?php opSign('+'); ?>
<?php sumCard('CASH IN', $getCASHINSUM); ?>
@ -521,17 +570,15 @@ addLog("add", "EXPENSE LIST", "VIEW", $lguserid, "report_expense", $lgno);
<?php sumCard('CASH RETURN', $getCASHRETURNSUM); ?>
<?php opSign('='); ?>
<?php sumCard('CASH ON HAND', $getENDBALANCESUM, 'strong'); ?>
<div style="flex:0 0 auto; width:16px;"></div>
<div class="op-sign" style="flex:0 0 auto; width:16px;"></div>
<?php opSign(','); ?>
<div style="flex:0 0 auto; width:4px;"></div>
<div class="op-sign" style="flex:0 0 auto; width:4px;"></div>
<?php sumCard('GAS', $getGASSUM, 'gas'); ?>
</div>
<!-- CASH IN CASH OUT: 왼쪽 기준 정렬이라 카드줄과 x좌표 일치 -->
<div style="display:flex; align-items:flex-start;">
<!-- OPENING(172) + gap(14) + '+'(36) + gap(14) = 236 CASH IN 시작 -->
<div style="flex:0 0 auto; width:236px;"></div>
<div style="flex:0 0 auto; width:408px; position:relative;">
<!-- CASH IN CASH OUT -->
<div class="diff-row" style="display:flex; align-items:flex-start; margin-top:10px;">
<div style="flex:0 0 auto; width:100%; max-width:408px; position:relative;">
<svg width="408" height="46" viewBox="0 0 408 46" style="display:block;">
<path d="M86 2 L86 20 Q86 32 98 32 L306 32 Q318 32 318 20 L318 2"
fill="none" stroke="#c4c9c5" stroke-width="2" stroke-dasharray="0.1 7" stroke-linecap="round"/>
@ -546,7 +593,7 @@ addLog("add", "EXPENSE LIST", "VIEW", $lguserid, "report_expense", $lgno);
</div>
</div>
</div>
<!-- /sumcard-wrap -->
<div style="height:8px;"></div>
@ -599,4 +646,4 @@ addLog("add", "EXPENSE LIST", "VIEW", $lguserid, "report_expense", $lgno);
</section>
</main><!-- End #main -->
</main><!-- End #main -->

View File

@ -73,6 +73,22 @@ $customerArray_pl = array(
"c_email"=>"Email", "c_geolat"=>"Latitude", "c_geolon"=>"Longitude"
);
// ACC 프리셋 : 전체(customerArray)에서 Region, CORSIA Date, Latitude, Longitude, Note 제외
$customerArray_acc = array(
"c_accountno"=>"Account No", "c_status"=>"Account Status", "c_name"=>"Restaurant Name",
"m_currentdriverinitial"=>"Current Driver", "c_address"=>"Address",
"c_city"=>"City", "c_postal"=>"Postal Code", "c_area"=>"Area", "c_phone"=>"Phone", "c_phoneext"=>"Ext",
"c_cell"=>"Cell", "c_rate"=>"Rate", "c_paymenttype"=>"Payment", "c_maincontainer"=>"Main Container",
"c_container"=>"Container Detail", "c_location"=>"Container Location", "c_schedule"=>"Pickup Schedule", "c_scheduleday"=>"Pickup Weekday",
"c_fullcycle"=>"Cycle", "c_fullcycleforced"=>"Forced Cycle", "c_sludge"=>"Sludge",
"c_expoilmonth"=>"Expected Oil Vol per Month", "c_hstno"=>"HST No", "c_identcode"=>"Identification Code",
"c_comment_ri"=>"Comment", "c_contractdate"=>"Contract Date",
"c_form_new"=>"Form", "c_form_us"=>"US", "c_form_eu"=>"EU Date", "c_contractby"=>"Contact By", "c_email"=>"Email",
"c_removaldate"=>"Removal Date", "c_salesperson"=>"Sales Person", "c_salesmethod"=>"Sales Method", "c_salescommissiondate"=>"Sale Commission Date", "c_installdate"=>"Install Date",
"c_fpickup"=>"First Pickup Date", "c_inactivedate"=>"Inactive Date", "c_switchformdate"=>"Switch Form Date", "c_exchangedate"=>"Container Exc. Date",
"c_payableto"=>"Payable To", "c_paymentcycle"=>"Payment Cycle", "c_mailingaddr"=>"Mailing Address", "c_comment_ci"=>"Comment2"
);
$oilhistoryArray_acc = array(
"d_inputdate"=>"Pickup Date", "c_accountno"=>"Account No", "c_name"=>"Restaurant Name", "d_quantity"=>"Oil Quantity", "d_sludge"=>"Sludge",
"c_rate"=>"Rate", "c_status"=>"Account Status", "c_paymentcycle"=>"Payment Cycle", "m_currentdriverinitial"=>"Current Driver",

View File

@ -64,6 +64,22 @@ foreach ($arrStatus AS $key=>$value)
}
// Get Type Info (build dropdown from existing DR_TYPE values in DB)
$query_type = "SELECT DISTINCT dr_type FROM tbl_driver WHERE dr_type <> '' ORDER BY dr_type ASC";
$result_type = $jdb->nQuery($query_type, "type query error");
while ($row_type = mysqli_fetch_array($result_type, MYSQLI_ASSOC)) {
$typeVal = $row_type['dr_type'];
if ($typeVal == $dr_type) $selectTypeStr = "selected";
else $selectTypeStr = "";
$dr_typeSTR .= "
<option value='".htmlspecialchars($typeVal, ENT_QUOTES)."' $selectTypeStr>".htmlspecialchars($typeVal, ENT_QUOTES)."</option>";
}
?>
@ -248,6 +264,7 @@ $(document).ready(function(){
var dr_initial = $('#dr_initial').val();
var dr_cell = $('#dr_cell').val();
var dr_status = $('#dr_status').val();
var dr_type = $('#dr_type').val();
//alert(amodeid);
$.ajax({
@ -255,7 +272,7 @@ $(document).ready(function(){
method:"POST",
data:{mmode:mmode, dr_uid:dr_uid,
dr_firstname:dr_firstname, dr_lastname:dr_lastname, dr_initial:dr_initial,
dr_cell:dr_cell, dr_status:dr_status },
dr_cell:dr_cell, dr_status:dr_status, dr_type:dr_type },
//beforeSend:function(){
// $('#submitid').val("Updating");
//},
@ -377,6 +394,16 @@ $(document).ready(function(){
</select>
</td>
</tr>
<tr>
<td class="td-title-info">Type</td>
<td class="td-text-info">
<select id="dr_type" name="dr_type" class="custom-select" required='required' >
<option value=''>Select</option>
<?=$dr_typeSTR?>
</select>
</td>
</tr>
<!--

View File

@ -44,6 +44,7 @@ $columns[] = "dr_lastname";
$columns[] = "dr_cell";
$columns[] = "dr_status";
$columns[] = "dr_type";
@ -63,6 +64,7 @@ $values[] = str_replace("\\", "", trim($dr_lastname));
$values[] = str_replace("-", "", trim($dr_cell));
$values[] = $dr_status;
$values[] = $dr_type;
//for ($i=0; $i < count($columns); $i++)

View File

@ -183,6 +183,16 @@ if ($_SESSION['ss_LOGIN'] == 1) {
});
});
}
$(document).ready(function() {
$('#email, #password').on('keydown', function(e) {
if (e.key === 'Enter' || e.keyCode === 13) {
e.preventDefault();
runRecaptcha();
}
});
});
</script>
</body>