1

如果两个复选框都未选中,则表单操作应为“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">

查询:

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

4 回答 4

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
于 2013-06-17T13:43:31.800 回答
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 进行检查。这更安全。

于 2013-06-17T13:47:36.020 回答
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 演示

无需分别检查这两个条件,您可以这样做$('#chgact, #chg_db_url').is(':checked'),它会评估true是否检查了任何一个,如果两者都没有检查,则为 false...

于 2013-06-17T13:47:45.160 回答
1

袋子的另一个答案,怎么样.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");
    }
});

可能混淆了 if 和 else 循环,但你明白了要点。

于 2013-06-17T13:54:01.560 回答