复选框始终"开启"

Thi*_*ago 32 jquery uploadify asp.net-mvc-3

海兰!

当Uploadify将文件发送到操作时,我需要知道是否检查了checbox,所以我做了:

    $('#uploaded').uploadify({
        'uploader': '/uploadify.swf',
        'cancelImg': '/cancel.png',
        'script': '/Interaction/Upload',
        'multi': true,
        'auto': false,
        'method': 'post',
        'scriptData': {'Checkbox': $('#checkbox').val()},
    });
Run Code Online (Sandbox Code Playgroud)

但我离开了一个"开"的价值.无论是否检查.

有人可以帮忙吗?韩国社交协会.


更新:

我意识到uploadify在页面加载时获取复选框.这意味着如果我更改复选框(或任何其他类型的输入),uploadify将获得初始值,在这种情况下,"checkbox = false".

如何使用uploadify发送表单?

韩国社交协会.

Mik*_*keM 55

尝试 $('#checkbox').is(':checked')

  • 我总是"假"使用这个. (4认同)

Gop*_*ddy 25

复选框的值始终为"on".仅当选中复选框时,HTML表单才会将值发送到服务器.如果未选中该框,则将不存在请求参数.这种语义显然是为了最小化复选框和单选按钮之间的差异.

HTML表单实现以下语义:

if ($('#mycheckbox').is(':checked')) {
    payload['mycheckbox'] = $('#mycheckbox').val();
}
Run Code Online (Sandbox Code Playgroud)

您可以在Ajax中模仿这种语义,也可以直接发送'checked'标志,如下所示:

payload['mycheckbox'] = $('#mycheckbox').is(':checked');
Run Code Online (Sandbox Code Playgroud)

我建议模仿HTML Form语义.无论客户端做什么,我都会在服务器代码中推荐以下内容:

if mycheckbox param exists and its value is either 'true' or 'on' {  // pseudo code of course
    // mycheckbox is checked
} else {
    // mycheckbox is unchecked
}
Run Code Online (Sandbox Code Playgroud)

希望这个解释有所帮助

  • on 语义非常混乱......我希望它能让某人的生活更轻松!即使禁用的复选框也具有“on”值...... (2认同)

Gab*_*vay 14

还有就是要检查像所有这些元素的属性相当方便的方法disabled,checked等用的prop功能.这也将它转换为布尔值:

$('#checkbox').prop('checked'); // -> true/false
$('#checkbox').prop('disabled'); // -> true/false
Run Code Online (Sandbox Code Playgroud)


Sha*_*oli 10

试试这个

$('#checkbox').is(':checked')
Run Code Online (Sandbox Code Playgroud)


ros*_*dia 7

更改:

$('#checkbox').val()
Run Code Online (Sandbox Code Playgroud)

$('#checkbox').attr('checked')
Run Code Online (Sandbox Code Playgroud)