2012-03-15 6 views
1

Я хочу отправить форму после нажатия на ярлык рядом с флажком. Поэтому я создал простую функцию ниже. Html код:Toggle checkbox перед отправкой формы

<input class="myinput" type="checkbox" name="photo"id="photo" value="1" /> 
<label class="autosend" for="photo">Photos</label> 
<input class="myinput" type="checkbox" name="text"id="photo" value="1" /> 
<label class="autosend" for="text">Text</label> 

Jquery код:

$('.autosend').click(function() { 
$('form#search').submit(); 
}); 

Основная проблема является - после нажатия на форме этикетки посылается, но без проверенного флажка. Почему это? Я вижу в своем веб-браузере, что флажок проверяется всего на несколько секунд перед отправкой. Есть ли способ использовать этот код jquery выше с возможностью проверки или снятия флажка, который принадлежит определенной метке?

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

$(this).prev(".myinput").attr('checked','checked'); 

Но это не решение, потому что мне нужно проверить, если предыдущий вход проверяется и только переключение (между государством проверяется и не проверяется) ,

+0

Значит, вы хотите, чтобы снимок был снят при проверке текста? если это так, разве радио не будет лучше? – scott

ответ

1
$('input:checkbox').change(function() { 
$('form#search').submit(); 
}); 
+0

Ничего себе, это было так просто. Работает префект. Спасибо огромное! – Lucas

2

Вы можете отправить форму на событии изменения в флажке:

$('input[name=text]').on('change', function(){ 
    $(this).parents('form').submit(); 
}); 
+0

Это прекрасное решение, но у меня больше входных данных, чем один, называемый «текст». – Lucas

+0

Это не только текст, но и оба флажка. –

+0

А, ок. Так что это тоже хорошее решение. Голосуйте за вас. – Lucas

0

Прежде всего атрибут label элемента for должны быть установлены в id родственного ввода.

<input class="myinput" type="checkbox" name="photo" id="photo" value="1" /> 
<label class="autosend" for="photo">Photos</label> 

<input class="myinput" type="checkbox" name="text" id="text" value="1" /> 
<label class="autosend" for="text">Text</label> 

Во-вторых, вы должны использовать change событие, чтобы охватить пользователей подбирая коробку с помощью ввода с клавиатуры, и вы должны также проверить, чтобы убедиться, что коробка проверяется, не бесконтрольно

$('input:checkbox').change(function() { 
    if ($(this).is(":checked")) { 
     $('form#search').submit(); 
    } 
}); 

Example fiddle

0

Проблема заключается в том, что атрибут for элемента <label> соответствует ID не имя элемента, которое y ou хочет, чтобы это сослалось. Ваш ярлык и ваш флажок не подключены, поэтому щелчок на ярлыке не переключит этот флажок.

+0

Да, у меня есть, я забыл поместить его в код здесь. Но я уже нашел решение, упомянутое ниже кем-то другим. Спасибо за ответ. – Lucas

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