jQuery - 如果复选框1&复选框2未经检查 - 更改表单操作

时间:2013-06-17 13:40:21

标签: jquery checkbox

如果没有选中复选框,则表单操作应为'not_checked.php'如果未选中其中一个,则可以更改操作,但不能同时更改两者。这是语法错误吗? HTML:

<form id="emf-form" target="_self" enctype="multipart/form-data" method="post" action="test3.php" name="emf-form">



<input type="checkbox" class="ahh" checked id="chg_db_url"> 

...

<input type="checkbox" class="ahh" id="chgact">

Jquery的:

<script>
    if(!$('#chgact').is(':checked') && !$('#chg_db_url').is(':checked')) {
    $('#emf-form').attr('action', 'not_checked.php');
    };
</script>

4 个答案:

答案 0 :(得分:1)

看起来你想在两个复选框上使用onchange事件:

$('#chgact,#chg_db_url').on('change', function () {
    if (!$('#chgact, #chg_db_url').is(':checked')) {
        $('#emf-form').attr('action', 'not_checked.php');
    } else $('#emf-form').attr('action', 'test3.php');
}).triggerHandler('change'); //maybe you would like to trigger the event too

答案 1 :(得分:1)

根据我的理解,您想要检查一次,而不是每次更改。在这种情况下,请确保DOM已准备就绪。有几种方法可以做到这一点。将代码放在页面末尾是最简单的。

<form id="myform">
    <p>
        <input type="checkbox" id="cb1" name="checkbox1" />My first checkbox
    </p>
    <p>
        <input type="checkbox" id="cb2" name="checkbox2" />My second checkbox
    </p>
</form>

使用Javascript:

$(function () { // DOM is ready for sure
    if (!$('#cb1').is(':checked') && !$('#cb2').is(':checked')) {
        $('form').attr('action', 'not_checked.php');
    }
});

但是,如果您想在每次复选更改时更改它,请尝试以下代码:

$(function () { // DOM is ready for sure
    $('#myform').on('change', 'input:checkbox', function () {
        if (!$('#cb1').is(':checked') && !$('#cb2').is(':checked')) {
            $('#myform').attr('action', 'not_checked.php');
        } else {
            $(this).attr('action', 'checked.php');
        }
    });
});

这会将action属性分别设置为'checked.php'和'not_checked.php'。

以下是一个实时示例,其中显示了表单的操作:http://jsfiddle.net/3znpG/1/

另外,我建议使用一个提交页面并检查它们是否已使用PHP进行检查。这更安全。

答案 2 :(得分:1)

你可以尝试:

$('#chgact, #chg_db_url').change(function(){
    if(!$('#chgact, #chg_db_url').is(':checked')) {
        $('#emf-form').attr('action', 'not_checked.php');
    } else {
        $('#emf-form').attr('action', 'test3.php');
    }
});

JSBin Demo

无需单独检查这两个条件,您可以执行此操作$('#chgact, #chg_db_url').is(':checked')如果选中其中任何一个,它将评估为true,如果两者都不是,则评估为{...} < / p>

答案 3 :(得分:1)

另外还有一个答案,abt .filter()怎么样?

$('#chgact,#chg_db_url').on('change', function () {
    var len = $('#chgact,#chg_db_url').filter(":checked").length; //will get the length of the 
    if (len === 0) {
        alert("not checked");
    } else {
        alert("checked");
    }
});

或,not()

$('#chgact,#chg_db_url').on('change', function () {
    var len = $('#chgact,#chg_db_url').not(":checked").length; //will get the length of the 
    if (len === 0) {
        alert("checked");
    } else {
        alert("not checked");
    }
});

Mightve混合了if和else循环,但是你得到了要点。