我找不到所面临的问题的答案或解决方案。因此,我制作了一个脚本(php和jquery),该脚本允许用户在我的网站上宣传其“列表”。因此,当他们登陆页面时,他们可以选择他们想要提升的列表,然后当他们选择它时,jQuery会调用AJAX(在选择更改时),然后再调用php页面并获得所选列表的计划。由于我使用的是PayPal Standard,因此我只能通过一个输入传递变量(我将所有变量存储在一个自定义输入中,然后在php页面上以数组形式读取它们)。一切正常,列表更改时我的列表ID更改,输入中更改时,天数更改,但是复选框不起作用。

因此,在日期数据库中,我在列表表下有三列(功能,顶部搜索,侧边栏),默认情况下它们的值为0。因此,在该页面上,我禁用了所有已经推广的计划,并从日期数据库中提取了该值,然后值为0时,该计划可用于升级;如果值为1,则该计划已升级,而其残障者则可升级。现在,当为某个计划选中复选框时,它将复选框的值更改为1,然后该计划将更新列表,例如,如果用户选择了侧边栏,它将把列从0更新为1。单击它们后,cc>,var featuredvar topsearch在我的AJAX调用中将保持不变。它会更新复选框输入值,但不会反映在我的AJAX调用中。

jQuery的:

$('.select-placement').hide();
  $('.s-b').hide();
  $('#count-duration').text('0');

  $("#pick_listing, #no-text, #customCheck1, #customCheck2, #customCheck3").change(function() {
    var selectedValue = $('#pick_listing').val();
    $.ajax({
    url: '../paypal/promote/promote.php',
    type: 'POST',
    data: {selectedValue: selectedValue},
    success: function(data) {
    $('.select-placement').show();
    $(".select-results").html(data);
    $('.s-b').show();

    let ajax_duration = parseFloat($('#no-text').val() || '0');
    if (ajax_duration == 1) {
    $('#count-duration').text(ajax_duration + " day");
    } else {
    $('#count-duration').text(ajax_duration + " days");
    }

   // Changes checkbox value if its checked -- NOT WORKING
   if ($('#customCheck1').is(':checked')) {
      $("#customCheck1").val("1");
   } else {
      $("#customCheck1").val("0");
   }

   if ($('#customCheck2').is(':checked')) {
      $("#customCheck2").val("1");
   } else {
      $("#customCheck2").val("0");
   }

   if ($('#customCheck3').is(':checked')) {
      $("#customCheck3").val("1");
   } else {
      $("#customCheck3").val("0");
   }

    var duration_value = $('#no-text').val();
    var listing = $('#pick_listing').val();
    var featured = $('#customCheck1').val(); // It should update when the checkbox is checked
    var topsearch = $('#customCheck2').val(); // It should update when the checkbox is checked
    var sidebar = $('#customCheck3').val(); // It should update when the checkbox is checked

    // This is the custom PayPal input in which I store all the collected variables
   // All variables changes on change function instead of checkbox
    $('input[name=custom]').val("<?php echo $current_token; ?>," + listing + "," + duration_value + "," + featured + "," + topsearch + "," + sidebar);

    $('#tots').text("0");
    $('#tots2').text("0");
    $('#icon1').css('color','#ccc');
    $('#icon2').css('color','#ccc');
    $('#icon3').css('color','#ccc');
    }
    });
});


Promotion.php文件:

$placement_token = $_POST['selectedValue']; // Getting the value from AJAX

// Call the promote options
$listing_placement = mysqli_query($conn, "SELECT featured, topsearch, sidebar FROM listing WHERE listing_token='$placement_token'"); ?>
<form id="custom-form" class="row row-placement">
<?php while($place_row = mysqli_fetch_row($listing_placement)) {
    if ($place_row[0] == 1) { ?>
  <div class="col-sm-4 listing-disabled">
    <div class="select-ad disabled-ad">
      <div class="already-promoted">Already Promoted</div>
      <div class="ad-image">
        <div class="lp-select-top input-group margin-right-0 clearfix">
          <div class="custom-control custom-checkbox cst-check">
    <input type="checkbox" class="custom-control-input checks" id="customCheck1" data-price="10" value="1">
            <label class="custom-control-label" for="customCheck1"></label>
          </div>
        </div>
        <img src="https://classic.listingprowp.com/wp-content/themes/listingpro/assets/images/spotlight.png">
      </div>
      <div class="price-content">
        <h5>Featured</h5>
        <label for="customCheck1">$10 / day</label>
      </div>
    </div>
  </div>
<?php } else { ?>
    <div class="col-sm-4">
    <div class="select-ad active-ad">
      <div class="ad-image">
        <div class="lp-select-top input-group margin-right-0 clearfix">
          <div class="custom-control custom-checkbox cst-check">
            <input type="checkbox" class="custom-control-input checks" id="customCheck1" data-price="10" value="0">
            <label class="custom-control-label" for="customCheck1"></label>
          </div>
        </div>
        <img src="https://classic.listingprowp.com/wp-content/themes/listingpro/assets/images/spotlight.png">
      </div>
      <div class="price-content">
        <h5>Featured</h5>
        <label for="customCheck1">$10 / day</label>
      </div>
    </div>
  </div>
<?php } if ($place_row[1] == 1) { ?>
<div class="col-sm-4 listing-disabled">
  <div class="select-ad disabled-ad">
    <div class="already-promoted">Already Promoted</div>
    <div class="ad-image">
      <div class="lp-select-top input-group margin-right-0 clearfix">
        <div class="custom-control custom-checkbox cst-check">
          <input type="checkbox" class="custom-control-input checks" id="customCheck2" data-price="50" value="1">
          <label class="custom-control-label" for="customCheck2"></label>
        </div>
      </div>
      <img src="https://classic.listingprowp.com/wp-content/themes/listingpro/assets/images/topofsearch.png">
    </div>
    <div class="price-content">
      <h5>Top of Search</h5>
      <label for="customCheck2">$50 / day</label>
    </div>
  </div>
</div>
<?php } else { ?>
<div class="col-sm-4">
  <div class="select-ad active-ad">
    <div class="ad-image">
      <div class="lp-select-top input-group margin-right-0 clearfix">
        <div class="custom-control custom-checkbox cst-check">
          <input type="checkbox" class="custom-control-input checks" id="customCheck2" data-price="50" value="0">
          <label class="custom-control-label" for="customCheck2"></label>
        </div>
      </div>
      <img src="https://classic.listingprowp.com/wp-content/themes/listingpro/assets/images/topofsearch.png">
    </div>
    <div class="price-content">
      <h5>Top of Search</h5>
      <label for="customCheck2">$50 / day</label>
    </div>
  </div>
</div>
<?php } if ($place_row[2] == 1) { ?>
<div class="col-sm-4 listing-disabled">
  <div class="select-ad disabled-ad">
    <div class="already-promoted">Already Promoted</div>
    <div class="ad-image">
      <div class="lp-select-top input-group margin-right-0 clearfix">
        <div class="custom-control custom-checkbox cst-check">
          <input type="checkbox" class="custom-control-input checks" id="customCheck3" data-price="20" value="1">
          <label class="custom-control-label" for="customCheck3"></label>
        </div>
      </div>
      <img src="https://classic.listingprowp.com/wp-content/themes/listingpro/assets/images/listingsidebar.png">
    </div>
    <div class="price-content">
      <h5>Sidebar</h5>
      <label for="customCheck3">$20 / day</label>
    </div>
  </div>
</div>
<?php } else { ?>
<div class="col-sm-4">
  <div class="select-ad active-ad">
    <div class="ad-image">
      <div class="lp-select-top input-group margin-right-0 clearfix">
        <div class="custom-control custom-checkbox cst-check">
          <input type="checkbox" class="custom-control-input checks" id="customCheck3" data-price="20" value="0">
          <label class="custom-control-label" for="customCheck3"></label>
        </div>
      </div>
      <img src="https://classic.listingprowp.com/wp-content/themes/listingpro/assets/images/listingsidebar.png">
    </div>
    <div class="price-content">
      <h5>Sidebar</h5>
      <label for="customCheck3">$20 / day</label>
    </div>
  </div>
</div>
<?php } } ?>
</form>


我真的很困惑,因为var sidebarvar duration_value每次更改都会更新,但是checkboxese不会。我读过我应该使用var selectedValue而不是仅仅使用document on change函数,但是我尝试了一下,但没有帮助。我知道发布的问题很乱,但是我无法在jsfiddle中复制它。我只需要保持复选框更改CHANGE值的解决方案。

问候

最佳答案

复选框在html和Javascript / JQuery中的处理方式不同。价值不是您要在此处更改的内容。您要基于复选框属性设置变量的值。

根据您的反馈,我更新了代码,其中选择更改使ajax调用根据所选值启动表单。然后,在更改任何形式的输入时,将读取值以格式化用于隐藏字段的字符串。

 $('.select-placement').hide();
  $('.s-b').hide();
  $('#count-duration').text('0');

  $("#pick_listing").change(function() {
    var selectedValue = $('#pick_listing').val();
    $.ajax({
       url: '../paypal/promote/promote.php',
       type: 'POST',
       data: {selectedValue: selectedValue},
       success: function(data) {
          $('.select-placement').show();
          $(".select-results").html(data);
          $('.s-b').show();

          $('#tots').text("0");
          $('#tots2').text("0");
          $('#icon1').css('color','#ccc');
          $('#icon2').css('color','#ccc');
          $('#icon3').css('color','#ccc');
       }
    });
  });

  $("#no-text, #customCheck1, #customCheck2, #customCheck3").change(function() {
      let ajax_duration = parseFloat($('#no-text').val() || '0');
      if (ajax_duration == 1) {
         $('#count-duration').text(ajax_duration + " day");
      } else {
         $('#count-duration').text(ajax_duration + " days");
      }

      var duration_value = $('#no-text').val();
      var listing = $('#pick_listing').val();
      var featured = ($('#customCheck1').prop('checked')) ? "1" : "0";
      var topsearch = ($('#customCheck2').prop('checked')) ? "1" : "0";
      var sidebar = ($('#customCheck3').prop('checked')) ? "1" : "0";

      // This is the custom PayPal input in which I store all the collected variables
      // All variables changes on change function instead of checkbox
      $('input[name=custom]').val("<?php echo $current_token; ?>," + listing + "," + duration_value + "," + featured + "," + topsearch + "," + sidebar);


  });

08-18 07:37
查看更多