Javascript Jquery不适用于Safari

Javascript Jquery不适用于Safari,javascript,jquery,ios,safari,Javascript,Jquery,Ios,Safari,我有一些jquery,它适用于IE、Chrome和Firefox,但不适用于safari。如果用户单击按钮,如果单击的按钮没有所述类,则调用toggleClass。这是一个 这是HTML <form id="quoteform" action="confirm_plan_options.php" method="post" name="quoteform"> <div id="deduct_term_holder"> <h3 class="fs-subtitle

我有一些jquery,它适用于IE、Chrome和Firefox,但不适用于safari。如果用户单击按钮,如果单击的按钮没有所述类,则调用toggleClass。这是一个

这是HTML

<form id="quoteform" action="confirm_plan_options.php" method="post" name="quoteform">
<div id="deduct_term_holder">
  <h3 class="fs-subtitle">Deductibles</h3>
  <input name="disappearing" value="Disappearing" class="deductible" id="deductible0" type="button">
  <input style="display: none;" name="zero" value="$0" class="deductible" id="deductible1" type="button">
  <input name="fifty" value="$50" class="deductible" id="deductible2" type="button">
  <input name="onehundred" value="$100" class="deductible uiButton" id="deductible3" type="button">
  <input name="two-hundred" value="$200" class="deductible" id="deductible4" type="button">
  <br>
  <h3 class="fs-subtitle">Term Years</h3>
  <input name="1-year" value="1 years" class="term-years" id="1_year_term" type="button">
  <input name="2-year" value="2 years" class="term-years uiButton" id="2_year_term" type="button">
  <input name="3-year" value="3 years" class="term-years" id="3_year_term" type="button">
  <input name="4-year" value="4 years" class="term-years" id="4_year_term" type="button">
  <input name="5-year" value="5 years" class="term-years" id="5_year_term" type="button">
  <input style="display: none;" name="6-year" value="6 years" class="term-years" id="6_year_term" type="button">
  <input style="display: none;" name="7-year" value="7 years" class="term-years" id="7_year_term" type="button">
  <input style="display: none;" name="8-year" value="8 years" class="term-years" id="8_year_term" type="button">
</div>
<div id="plansdiv" style="width:100%">
  <table id="plans">
    <caption>Ford Extended Service Care Plans
      <br>Click on price to select.</caption>
    <tbody>
      <tr>
        <td>Term Miles</td>
        <td>End Year</td>
        <td>PremiumCare</td>
        <td>ExtraCare</td>
        <td>BaseCare</td>
        <td>PowertrainCare</td>
      </tr>
      <tr>
        <td class="term_miles">12,000</td>
        <td>2018</td>
        <td>
          <input name="PremiumCare_plan" value="$4,200" class="plan-price" type="submit">
        </td>
        <td>
          <input name="ExtraCare_plan" value="$3,540" class="plan-price" type="submit">
        </td>
        <td>
          <input name="BaseCare_plan" value="$3,135" class="plan-price" type="submit">
        </td>
        <td>
          <input name="PowertrainCare_plan" value="$2,715" class="plan-price" type="submit">
        </td>
      </tr>
      <tr>
        <td class="term_miles">18,000</td>
        <td>2018</td>
        <td>
          <input name="PremiumCare_plan" value="$4,255" class="plan-price" type="submit">
        </td>
        <td>
          <input name="ExtraCare_plan" value="$3,730" class="plan-price" type="submit">
        </td>
        <td>
          <input name="BaseCare_plan" value="$3,295" class="plan-price" type="submit">
        </td>
        <td>
          <input name="PowertrainCare_plan" value="$2,820" class="plan-price" type="submit">
        </td>
      </tr>
      <tr>
        <td class="term_miles">24,000</td>
        <td>2018</td>
        <td>
          <input name="PremiumCare_plan" value="$4,410" class="plan-price" type="submit">
        </td>
        <td>
          <input name="ExtraCare_plan" value="$3,860" class="plan-price" type="submit">
        </td>
        <td>
          <input name="BaseCare_plan" value="$3,400" class="plan-price" type="submit">
        </td>
        <td>
          <input name="PowertrainCare_plan" value="$2,900" class="plan-price" type="submit">
        </td>
      </tr>
      <tr>
        <td class="term_miles">36,000</td>
        <td>2018</td>
        <td>N/A</td>
        <td>
          <input name="ExtraCare_plan" value="$4,125" class="plan-price" type="submit">
        </td>
        <td>
          <input name="BaseCare_plan" value="$3,855" class="plan-price" type="submit">
        </td>
        <td>
          <input name="PowertrainCare_plan" value="$3,240" class="plan-price" type="submit">
        </td>
      </tr>
      <tr>
        <td class="term_miles">48,000</td>
        <td>2018</td>
        <td>N/A</td>
        <td>N/A</td>
        <td>N/A</td>
        <td>N/A</td>
      </tr>
      <tr>
        <td class="term_miles">60,000</td>
        <td>2018</td>
        <td>N/A</td>
        <td>N/A</td>
        <td>N/A</td>
        <td>N/A</td>
      </tr>
      <tr>
        <td class="term_miles">75,000</td>
        <td>2018</td>
        <td>N/A</td>
        <td>N/A</td>
        <td>N/A</td>
        <td>N/A</td>
      </tr>
    </tbody>
  </table>
  <br>
  <input name="plan_type" value="used" type="hidden">
</div>
<input type="button" id="to-vehicle-info" name="previous" class="previous action-button" value="Previous" />
<input type="button" name="next" class="next action-button" value="Next" />
</form>
还有Jquery

    $('.deductible').click(function(e) {
  var termstr = '';
  var deductstr = '';
  factory_warranty = $('input[name=factory_warranty]:checked').val();
  snowplow = $('input[name=snowplow]:checked').val();
  usage = $('input[name=usage]:checked').val();
  milestr = $('#current_milage').val();
  turbo = $('input[name=turbo]:checked').val();
  purchase_date = $('input[name=purchase_date]:checked').val();
  $('.deductible').each(function() {
    if ($(this).is(":focus") && !$(this).hasClass('uiButton') && !$('.deductible').hasClass('uiButton')) {
      $(this).toggleClass('uiButton');
    } else if ($(this).hasClass('uiButton') && $(this).is(':focus')) {
      e.preventDefault();
    } else if (!$(this).hasClass('uiButton') && !$('.term-years').is(':focus') && !$('.term-years').hasClass('uiButton') && $(this).is(':focus')) {
      $(this).toggleClass('uiButton');
    } else if (!$(this).hasClass('uiButton') && !$('.term-years').is(':focus') && $('.term-years').hasClass('uiButton') && $(this).is(':focus') && $('.deductible').hasClass('uiButton')) {
      $('.deductible').removeClass('uiButton');
      $(this).toggleClass('uiButton');
    }
  });
  $('.term-years').each(function(i) {
    if ($('#' + i + '_year_term').hasClass('uiButton')) {
      termstr = $('#' + i + '_year_term').val();
    }
  });
  $('.deductible').each(function(i) {
    if ($('#deductible' + i).hasClass('uiButton')) {
      deductstr = $('#deductible' + i).val();
      if (deductstr.indexOf('$') > -1) {
        deductstr = deductstr.replace(/\D/g, '');
      }
    }
  });
  //alert('plan code is' + plan_code);
  get_plan_pricing(plan_type, plan_code, termstr, deductstr, milestr, factory_warranty, snowplow, usage, turbo, purchase_date);
});
$('.term-years').click(function() {
  var str = $(this).val();
  milestr = $('#current_milage').val();
  var deductstr = '';
  factory_warranty = $('input[name=factory_warranty]:checked').val();
  snowplow = $('input[name=snowplow]:checked').val();
  usage = $('input[name=usage]:checked').val();
  milestr = $('#current_milage').val();
  turbo = $('input[name=turbo]:checked').val();
  purchase_date = $('input[name=purchase_date]:checked').val();
  $('.term-years').each(function() {
    if ($(this).is(":focus") && !$(this).hasClass('uiButton') && !$('.term-years').hasClass('uiButton')) {
      $(this).toggleClass('uiButton');
    } else if ($(this).is(":focus") && !$(this).hasClass('uiButton') && $('.term-years').hasClass('uiButton')) {
      $('.term-years').removeClass('uiButton');
      $(this).toggleClass('uiButton');
    }
  });
  $('.deductible').each(function(i) {
    if ($('#deductible' + i).hasClass('uiButton')) {
      deductstr = $('#deductible' + i).val();
      if (deductstr === 'Disappearing') {
        return;
      } else {
        deductstr = deductstr.replace(/\D/g, '');
      }
    }
  });
  //alert('plan code is ' + plan_code);
  get_plan_pricing(plan_type, plan_code, str, deductstr, milestr, factory_warranty, snowplow, usage, turbo, purchase_date);
});
$('.plan-price').click(function(e) {
  if ($('.next').prop('disabled', true)) {
    $('.next').prop('disabled', false);
  }
  if ($(this).is(':focus') && !$(this).hasClass('uiButton') && !$('.plan-price').hasClass('uiButton')) {
    $(this).toggleClass('uiButton');
  } else if ($('.plan-price').hasClass('uiButton') && $(this).is(':focus') && !$(this).hasClass('uiButton')) {
    $('.plan-price').removeClass('uiButton');
    $(this).toggleClass('uiButton');
  }
  //alert($(this).val());
  e.preventDefault();
});

我终于设法让这个工作使用

if(!$(e.target).hasClass('uiButton') && !$('.plan-price').hasClass('uiButton')){
$(e.target).toggleClass('uiButton');
}
else if($('.plan-price').hasClass('uiButton') && $(e.target) && !$(e.target).hasClass('uiButton')){
$('.plan-price').removeClass('uiButton');
$(e.target).toggleClass('uiButton');
}

我在这里找到的,我终于用

if(!$(e.target).hasClass('uiButton') && !$('.plan-price').hasClass('uiButton')){
$(e.target).toggleClass('uiButton');
}
else if($('.plan-price').hasClass('uiButton') && $(e.target) && !$(e.target).hasClass('uiButton')){
$('.plan-price').removeClass('uiButton');
$(e.target).toggleClass('uiButton');
}

我在这里发现,这些变量
工厂保修
雪犁
等应该用
var
@Pointy声明,这样做不会影响结果,但我已经更新了代码。这些变量
工厂保修
雪犁
,etc.应该用
var
@Pointy声明,这样做不会影响结果,但我已经更新了代码。