如果我选中了复选框,则删除value = MRW选项

Remove option with value = MRW if I checkbox if checked

本文关键字:value 删除 MRW 选项 复选框 如果      更新时间:2023-09-26

我试图删除一个值等于MRW的选项,如果#natural_person_lives_in_ccs_0被选中,但如果我选中复选框,那么SELECT应该像默认情况下一样意味着相同的选项。我是这样做的:

$(document).ready(function(){
  var lives_in_css = $('#natural_person_lives_in_ccs_0').is(':checked');
  if (lives_in_css) {
      $(".shipping_from option[value='MRW']").remove();
  } else {
      $(".shipping_from").append('<option value="MRW">Option1</option>');
  }
});

但它不工作,因为Option1是默认添加的,我不知道如何写这个。我想用.toggle(),但不知道它是否正确。我在这里留了一个普朗克做测试。有什么帮助吗?

步骤:

  1. 检查Yes选项值=MRW应被删除
  2. 删除Yes选项value=MRW的检查,默认为(相同位置)

尝试使用.change()函数来完成这里的任务,

$('#natural_person_lives_in_ccs_0').click(function () {
    var elem = $(".shipping_from option[value='MRW']");
    if (this.checked) {
        elem.remove();
    } else if (elem.length == 0) {
        $(".shipping_from").prepend('<option value="MRW">Option1</option>');
    }
});

演示

最好的方法是,

$('#natural_person_lives_in_ccs_0').click(function () {
    $(".shipping_from option[value='MRW']").toggle(!this.checked);
    $(".shipping_from option:eq(" + ((this.checked) ? 1 : 0) + ")").prop('selected', true);
});
演示

像下面这样写你的脚本。

var showOptionsAcorrdingCheckbox = function(){
    var lives_in_css = $('#natural_person_lives_in_ccs_0').is(':checked');
    if (lives_in_css) {
        $(".shipping_from option[value='MRW']").remove();
    } else {
        $(".shipping_from").append('<option value="MRW">Option1</option>');
    }
}
$(document).ready(function(){
  $(':checkbox').change(showOptionsAcorrdingCheckbox);
});

DEMO代码:

$(document).ready(function(){
    $(document).on('change', '#natural_person_lives_in_ccs_0', function(){
        if($(this).is(':checked'))
        {
            $(".shipping_from option[value='MRW']").remove();
        }
        else 
        {
          $(".shipping_from").append('<option value="MRW">Option1</option>');
        }
    });
  });