javascript - JS & Function 重叠,函数调用错误
问题描述
我有一个代码和 JS 2 个不同的函数,但是当我尝试更改序列或添加函数调用时它以 1 方式工作......它因某种原因而倍增
做了几天,无法弄清楚重叠在哪里
这是现场直播 https://ananastours.com/tour/7-days-hurghada-albatros-palace/
人数变化时的第一个功能,它重新计算新价格
$(document).on('change', '.tourmaster-tour-booking-people-container select, .tourmaster-tour-booking-room-input select', function(){
$('.loader-image-block').show();
setTimeout(function(){
var newpric = $('.tourmaster-single-header .tourmaster-tour-discount-price').text();
if(newpric == ''){
loadnewprice();
}else{
$('.loader-image-block').hide();
}
}, 3000);
});
function loadnewprice(){
var formdata = $("form#tourmaster-single-tour-booking-fields").serialize();
var frmout = $('#loc-from-out').val();
var toout = $('#loc-to-out').val();
var post_id = $('#post_id').val();
var tourdate = $('.tourmaster-datepicker-alt').val();
var baseurl = window.location.origin;
jQuery.ajax({
url: baseurl+"/wp-admin/admin-ajax.php",
data: {
action: 'slct_flit_pric',
frmout: frmout,
toout: toout,
post_id: post_id,
tourdate: tourdate,
formdata: formdata,
},
type: 'GET',
success: function(data){
if(data){
if(data.indexOf('-') != -1){
var avlseat = data.split('-');
alert('avilable sits is '+avlseat[1]+', please change tour date or members.');
$('.tourmaster-tour-booking-people-container select').val('');
$('.tourmaster-tour-booking-submit-input .tourmaster-button').attr("disabled", true);
$('.loader-image-block').hide();
}else{
var oldpric = $('.tourmaster-single-header .tourmaster-tour-price .tourmaster-tail').text();
if(oldpric == ''){
var oldpric = $('.tourmaster-template-wrapper .tourmaster-tour-price .tourmaster-tail').text();
}
$('.tourmaster-tour-booking-submit-input .tourmaster-button').attr("disabled", false);
var crncy = $('#ccurncy').val();
var oldpris = oldpric.replace(crncy,'');
var oldprise = oldpris.replace(',','');
var newpric = parseInt(data) + parseInt(oldprise);
var changedpric = crncy+newpric+".00";
$(".tourmaster-tour-price .tourmaster-tail").text(changedpric);
$('.loader-image-block').hide();
}
}
}
});
}
第二,当更改日历中的日期选择器时,它会更改表单数据并应根据新日期更改价格,但它会返回到预先计算 Firs 功能工作正常......但在更改人员之后,你去更改它没有的日期'不工作
$(document).on('click', '.cursordate', function () {
$('.cursordate').removeClass('selectdat');
$(this).addClass('selectdat');
var slctdat = $(this).text();
var slctdat = slctdat.replace(/\s/g, '');
var reultt = slctdat.split('$');
var slctdatval = $(this).attr('data');
var slctcdatval = $(this).attr('cdata');
var frmout = $('#loc-from-out').val();
var toout = $('#loc-to-out').val();
var post_id = $('#post_id').val();
$('.loader-image-block').show();
var outnnam = $('#outnnam').val();
var innnam = $('#innnam').val();
var baseurl = window.location.origin;
jQuery.ajax({
url: baseurl+"/wp-admin/admin-ajax.php",
data: {
action: 'chang_flit_date',
frmout: frmout,
toout: toout,
dtout: slctdatval,
post_id: post_id,
outnnam: outnnam,
innnam: innnam,
},
type: 'GET',
dataType: 'json',
success: function(data){
if(data){
$('.sideoffer').html(data.sideoffer);
$('.tourmaster-datepicker-alt').val(slctdatval);
$('.hasDatepicker').val(slctcdatval);
//$('.tourmaster-datepicker-alt').change();
$('.shodat').text(reultt[0]);
// $(".tourmaster-tail").text(data.privpric);
// $(".tourmaster-tour-discount-price").text(data.tourpric);
$('.loader-image-block').hide();
}else{
}
}
});
});
JS代码
function my_ajax_savflit_function() {
global $wpdb;
$table_name = $wpdb->prefix . 'cws_flight_route';
$location = $_GET['frmout'];
$destination = $_GET['toout'];
$outbound = 'outbound';
$inbound = 'inbound';
$date = $_GET['dtout'];
$post_id = $_GET['post_id'];
$outnnam = $_GET['outnnam'];
$innnam = $_GET['innnam'];
$tour_pric = get_post_meta($post_id, 'tourmaster-tour-price', true);
$meta = get_post_meta( $post_id, 'tourmaster-tour-duration', true );
$nnmeta = $meta;
$indat = date('Y-m-d', strtotime($date. ' + '.$nnmeta.' days'));
$outbnd_rslt = $wpdb->get_results("SELECT * FROM $table_name WHERE (location = '$location' AND destination = '$destination' AND type = '$outbound' AND date = '$date')");
$inbnd_rslt = $wpdb->get_results("SELECT * FROM $table_name WHERE (location = '$destination' AND destination = '$location' AND type = '$inbound' AND date = '$indat')");
$result = array();
$sideoffer = '';
$outbnd = array();
$inbnd = array();
$mmin = $outbnd_rslt[0]->adult_price+$inbnd_rslt[0]->adult_price;
$mim_percent = $mmin+(($mmin)*20)/100;
$durasn = $outbnd_rslt[0]->duration;
$duration = explode(".",$durasn);
if(sizeof($duration) > 1){
$tiime = 60*60*$duration[0] + 60*$duration[1];
}else{
$tiime = 60*60*$duration[0];
}
$timestamp = strtotime($outbnd_rslt[0]->timing) + $tiime;
$cheap_out_time = date('H:i a', $timestamp);
$duras = $inbnd_rslt[0]->duration;
$duratio = explode(".",$duras);
if(sizeof($duratio) > 1){
$tiim = 60*60*$duratio[0] + 60*$duratio[1];
}else{
$tiim = 60*60*$duratio[0];
}
$timestam = strtotime($inbnd_rslt[0]->timing) + $tiim;
$cheap_in_time = date('H:i a', $timestam);$currency = get_option('cws-flights-currency');if(isset($currency) && $currency != ''){ $currency = $currency;}else{ $currency = '€';}
$sideoffer .= '<div class="postfrom">
<div class="ttyp">'.$outbnd_rslt[0]->type.'</div>
<div class="arline">'.$outbnd_rslt[0]->airlines.'</div>
<div class="ddat">'.date("D d M Y", strtotime($outbnd_rslt[0]->date)).'</div>
<div class="timme">'.$outbnd_rslt[0]->timing.' '.$outnnam.' / '.$cheap_out_time.' '.$innnam.'</div>
</div>';
$sideoffer .= '<div class="postto">
<div class="ttyp">'.$inbnd_rslt[0]->type.'</div>
<div class="arline">'.$inbnd_rslt[0]->airlines.'</div>
<div class="ddat">'.date("D d M Y", strtotime($inbnd_rslt[0]->date)).'</div>
<div class="timme">'.$inbnd_rslt[0]->timing.' '.$innnam.' / '.$cheap_in_time.' '.$outnnam.'</div>
</div>';
$sideoffer .= '<div class="postprispp">
<div class="prishad">Flight Price</div>
<div class="prispp">'.$currency.' '.$mmin.' pp</div>
</div>';
$sideoffer .= '<div class="postpris">
<div class="txinfo">* Price Include Taxes</div>
<div class="prishad">Was</div>
<div class="prispp">'.$currency.' '.$mim_percent.' pp</div>
<div class="prisofrhad">Price per person</div>
<div class="prisofrpp">'.$currency.' '.$mmin.'</div>
</div>';
$tourpric = $tour_pric + $mmin;
$result['tourpric'] = $currency.' '.$tourpric;
$privpric = $tour_pric + $mim_percent;
$result['privpric'] = $currency.' '.$privpric;
$result['sideoffer'] = $sideoffer;
echo $json = json_encode($result);
die;
}
add_action( 'wp_ajax_chang_flit_date', 'my_ajax_savflit_function' );
add_action( 'wp_ajax_nopriv_chang_flit_date', 'my_ajax_savflit_function' );
function my_ajax_slct_flit_pric() {
global $wpdb;
$table_name = $wpdb->prefix . 'cws_flight_route';
$location = $_GET['frmout'];
$destination = $_GET['toout'];
$post_id = $_GET['post_id'];
$date = $_GET['tourdate'];
$formdata = explode("&",$_GET['formdata']);
$realdata = array();
$adult = 0;
$children = 0;
$infant = 0;
foreach($formdata as $frmdata){
if (strpos($frmdata, 'adult') !== false) {
$fordat = explode("=",$frmdata);
$adult = $adult+$fordat[1];
}else if(strpos($frmdata, 'children') !== false) {
$fordat2 = explode("=",$frmdata);
$children = $children+$fordat2[1];
}else if(strpos($frmdata, 'infant') !== false) {
$fordat3 = explode("=",$frmdata);
$infant = $infant+$fordat3[1];
}else{}
}
$totalmembr = $adult + $children;
$_SESSION['totalmembr'] = $totalmembr;
$nnmeta = get_post_meta( $post_id, 'tourmaster-tour-duration', true );
$indat = date('Y-m-d', strtotime($date. ' + '.$nnmeta.' days'));
$outbnd_rslt = $wpdb->get_results("SELECT * FROM $table_name WHERE (location = '$location' AND destination = '$destination' AND type = 'outbound' AND date = '$date')");
$inbnd_rslt = $wpdb->get_results("SELECT * FROM $table_name WHERE (location = '$destination' AND destination = '$location' AND type = 'inbound' AND date = '$indat')");
if($totalmembr <= $outbnd_rslt[0]->seats && $totalmembr <= $inbnd_rslt[0]->seats){
if($adult > 0){
$adultout = $adult * $outbnd_rslt[0]->adult_price;
$adultin = $adult * $inbnd_rslt[0]->adult_price;
}else{
$adultout = 0;
$adultin = 0;
}
if($children > 0){
$childrenout = $children * $outbnd_rslt[0]->child_price;
$childrenin = $children * $inbnd_rslt[0]->child_price;
}else{
$childrenout = 0;
$childrenin = 0;
}
if($infant > 0){
$infantout = $infant * $outbnd_rslt[0]->infant_price;
$infantin = $infant * $inbnd_rslt[0]->infant_price;
}else{
$infantout = 0;
$infantin = 0;
}
$total = $adultout + $adultin + $childrenout + $childrenin + $infantout + $infantin;
echo $total;
die();
}else{
if($outbnd_rslt[0]->seats >= $inbnd_rslt[0]->seats){
echo 'seat-'.$inbnd_rslt[0]->seats;
}else{
echo 'seat-'.$outbnd_rslt[0]->seats;
}
die();
}
}
add_action( 'wp_ajax_slct_flit_pric', 'my_ajax_slct_flit_pric' );
add_action( 'wp_ajax_nopriv_slct_flit_pric', 'my_ajax_slct_flit_pric' );
解决方案
推荐阅读
- python - 使用 python 从发件人电子邮件地址在 Outlook 中创建规则
- c - JSON (GLib) 序列化泄漏 GHashTable 的内存
- javascript - 如何在 JavaScript 中使用 for 函数对值求和?
- android - 泡泡父母在android appcelerator中不起作用
- php - 如何使用条件语句更改我的顶部导航菜单
- javascript - JavaScript 回调在 Chrome 中出现故障?
- wpf - Helixtoolkit 在所有 3 轴上使用鼠标旋转 GeometryModel3D
- reactjs - 重用有状态的反应组件
- regex - 根据列名识别 Excel 中的特殊字符
- javascript - "破"怎么读 在异步功能中工作?