更改时在函数内获取新的radio和checkbox值

时间:2015-05-12 19:43:52

标签: jquery

我有一个名为function的过滤器,基本上可以获得2个无线电输入和1个复选框的值。我已设置要在change事件上触发的功能。

我遇到的问题是当函数触发时,其中任何3个的值都不会改变。

为什么价值不变?我一定错过了什么。

JSFIDDLE

HTML

<div id="filter_options">
  <label class="radio">
    <input type="radio" name="pindexed" id="pindexed" class="pindexed" value="No" checked>
    Yes 
  </label>
  <label class="radio">
    <input type="radio" name="pindexed" id="pindexed" class="pindexed" value="Yes">
    No 
  </label>
  <br />
  <label class="radio">
    <input type="radio" name="dindexed" id="dindexed" class="dindexed" value="No" checked>
    Yes 
  </label>
  <label class="radio">
    <input type="radio" name="dindexed" id="dindexed" class="dindexed" value="Yes">
    No 
  </label>

</div>

JQUERY

function filter() {
    var pindexed = $("input:radio[name='pindexed']").val();
    var dindexed = $("input:radio[name='dindexed']").val();
    var removed_checked = $("input[type='checkbox']").val();
    alert(pindexed);
    $.ajax({
        type: "POST",
        url: "gen_this.php",
        data: ({
            pindexed: pindexed,
            dindexed: dindexed,
            removed_checked: removed_checked
        }),
        success: function(data) {
            $('.gen_disavow_results').html(data);
        }
    });
};
$(document).on('change click', '#filter_options', function() {
    filter();
});

2 个答案:

答案 0 :(得分:1)

您需要确保获得已检查元素的值。一个例子是改为这三行:

 var pindexed = $("input:radio[name='pindexed']:checked").val();
 var dindexed = $("input:radio[name='dindexed']:checked").val();
 var removed_checked = $("input[type='checkbox']:checked").val();

答案 1 :(得分:0)

我认为逻辑错误在脚本中,你要求输入[name = petc]的值,你不是要求所选值的值,而只是要求第一个的值返回。

如果您专门询问选中选项的值,则会得到实际值:

    cam = new OrthographicCamera();
    cam.setToOrtho(false, 1920, 1080);
    sb = new SpriteBatch();

但是,我相信更改事件会在更改发生之前触发,因此如果单击NO,将其从yes切换为no,则值为YES,因为这是您单击它时的值。