2010-04-22 3 views
4

Использование .remove(), чтобы флажок «Выбрать все» не был отправлен на сервер.Есть ли способ удалить элемент формы без использования jQuery .remove()?

Однако, это видно пользователю, поскольку флажок «Выбрать все» «физически» удален с веб-страницы, после отправки.

Вместо этого я хотел бы удалить флажок «Выбрать все», чтобы он выглядел бесшовным, но НЕ на стороне сервера. то есть - я хотел бы сохранить ввод на странице, но удалить элемент в массиве формы до его отправки.

Могу ли я манипулировать массивом element [] формы перед его отправкой на сервер и удалить его там?

спасибо.

ответ

7

Если отключить флажок, он не будет отправлен вместе с остальной частью формы:

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

Используя этот метод, вы можете отключить элемент во время покориться и включить его снова сразу же после того, как:

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

Это чистое, спасибо. –

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); 
}); 
2

У Andy E и munch есть жизнеспособные решения. Вот еще:

Замените его на другой, инертный флажок

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

Конечно, это может создать проблемы, если представление формы не может по какой-то причине.

Смежные вопросы