2015-08-14 4 views
0

Я хочу отправить форму при нажатии переключателя. Код ниже отлично работает во всех браузерах, которые я тестировал до сих пор, кроме Safari.об изменении формы отправки не передает измененное значение в форме

В Safari, когда я нажимаю на переключатель, он, кажется, передает форму, прежде чем регистрировать значение нового выбранного элемента.

Вот пример.

HTML:

<input type="radio" value="1" checked="checked">radio button 1 
<input type="radio" value="2">radio button 2 
<input type="radio" value="3">radio button 3 

JS:

$j('input[type="radio"]').on('change',function(){ 
    $j(this).closest('form').submit(); 
}); 

Если я нажимаю на кнопку радио 2 или переключатель 3, форма была отправлена, но это представляется с значением 1, а не значение переключателя, на который я нажал.

Эта проблема не ограничивается переключателями. У меня такая же проблема с выборами. Когда я меняю значение, форма отправляется, но она отправляет старое значение.

EDIT HTML

<form accept-charset="UTF-8" action="someurl" method="post"> 
<label><input checked="checked" id="1" name="cart[location_id]" type="radio" value="1">radio button 1</label> 
<label><input id="2" name="cart[location_id]" type="radio" value="2">radio button 2</label> 
</form> 

ДРУГОЙ TRY JS Это также не работает

$j('input[type="radio"]').on('change',function(){ 
    $j('input[name="cart[location_id]"]').val($j(this).val()); 
    $j(this).closest('form').submit(); 
}); 
+0

потому что '' checked – Shehary

+0

У меня была эта проблема, как только вы можете добавить свой полный тег формы, а также – joyBlanks

+1

@Shehary Я действительно не думаю это проблема ... тогда это не сработало бы в каком-либо другом браузере. – narfie

ответ

1

Как сказал @Shehary - ваш HTML является определение того, какая кнопка радио представление значения на форме с 'checked = "checked"', в то время как ваш JS несет ответственность только за то, что форма отправляется на любой щелчок переключателя.

Вы, вероятно, хотите добавить условия для того, который был выбран когда-либо вход имеет правильное значение проверяется перед .submit()

$j('input[type="radio"]').on('change',function(){ 
    $j('input[type="radio"]').attr('checked').prop('checked', false); 
    $j(this).prop('checked', true); 
    $j(this).closest('form').submit(); 
}); 
+0

Thanx, но это тоже не работает. – narfie

+0

Вот jsfiddle с вашим предложением.Я добавил предупреждения для отображения выбранного значения. Это никогда не меняется. Это всегда 1. [link] (http://jsfiddle.net/narfie/m6ehejzj/1/) – narfie

+0

btw .. если я использую '$ j ('input [type =" radio "]'). Attr ('checked ') .prop (' checked ', false); 'Я получаю сообщение об ошибке в консоли $ j (...). attr (...). prop (...) не является функцией. – narfie

0

Итак, мы старались абсолютно все. Проблема, похоже, не связана с кодом или с браузером. Проблема в машине. (macbook air) Мы пробовали отправить обычный путь с помощью кнопки отправки в сафари, хром и firefox. На всех других машинах в этих браузерах (даже на мобильных устройствах) это работает. Просто не на этой машине.

Итак, я собираюсь закрыть эту тему, потому что я не думаю, что мы найдем ответ здесь.

В любом случае, за помощь!

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