有没有办法删除表单元素而不使用jQuery .remove()?

时间:2010-04-22 19:17:10

标签: javascript jquery

使用.remove()以便不会向服务器提交全选复选框。

但是,用户可以看到它,因为在提交时,从网页上“物理地”删除了全部选中复选框。

相反,我想删除select all复选框以显示无缝但不在服务器端。 ie - 我想保留页面上的输入,但在发送之前删除表单数组中的元素。

我可以在将表单的element []数组发送到服务器并将其删除之前对其进行操作吗?

谢谢。

3 个答案:

答案 0 :(得分:7)

如果您禁用该复选框,则不会将其与表单的其余部分一起发送:

$('#myInp').attr("disabled", true);

使用此方法,您可以在提交期间禁用该元素,并在以下情况后立即再次启用该元素:

$('#myForm').submit(function()
{
    var $myInp = $('#myInp');
    $myInp.attr("disabled", true);
    window.setTimeout(function () 
    {
        $myInp.attr("disabled", false);
    }, 0);
});

答案 1 :(得分:2)

Andy E和munch都有可行的解决方案。这是另一个:

将其替换为另一个惰性复选框

$('#select-all-checkbox').replaceWith( '<input type="checkbox"/>' );

当然,如果表单提交由于某种原因失败,这可能会产生问题。

答案 2 :(得分:1)

目前,无法操纵表单数据集(并且它是something that I want to see in future versions of HTML too),但您可以通过在提交期间暂时禁用输入来伪造它:

$form.submit(function(){
    $input.attr('disabled', true);
    setTimeout(function(){
        $input.removeAttr('disabled');
    }, 0);
});