Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: ajax+select+checkbox
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » ajax+select+checkbox

Страниц (1): [1]
 

1. b0lsh0i_b0ber - 02 Марта, 2012 - 10:51:21 - перейти к сообщению
Привет товарищи! Аякс не хочет передавать ни в какую значение select.
CODE (html):
скопировать код в буфер обмена
  1. <select  name="sex"  id="sex" >
  2. <option value="Мужской">Мужской</option>
  3. <option value="Женский">Женский</option>
  4.  

вот как передает
CODE (js):
скопировать код в буфер обмена
  1. .....
  2. var sex = $("input#sex").val();
  3. var dataString =...'&sex=' + sex...;


отдает он это соответственно php. все остальные поля передаются нормально, что не так делаю?

А да, передаю чекбокс точно таким же образом, и почему-то в любом состоянии передается его значение(
2. Panoptik - 02 Марта, 2012 - 10:54:50 - перейти к сообщению
тут беда не в аяксе, а в том что вы сами его скорее всего не передаете...
где скрипт с аяксом?
3. Viper - 02 Марта, 2012 - 11:00:23 - перейти к сообщению
Panoptik неа Улыбка Банально потому что в select нет value. Есть в option. Да к тому же input не относится к select, и наоборот.

CODE (javascript):
скопировать код в буфер обмена
  1. $('select#sex option').filter(':selected').val();
4. b0lsh0i_b0ber - 02 Марта, 2012 - 11:04:38 - перейти к сообщению
Viper спасибо большое, опять меня выручаешь)

А с чек боксом не подскажешь?)
5. Viper - 02 Марта, 2012 - 13:14:25 - перейти к сообщению
b0lsh0i_b0ber пишет:
А с чек боксом не подскажешь?)

чекбоксы обычно не имеют атрибута value. Т.е. если у вас на странице

CODE (html):
скопировать код в буфер обмена
  1. <input type="checkbox" name="chk[]" />
  2. <input type="checkbox" name="chk[]" checked="checked" />
  3. <input type="checkbox" name="chk[]" />

То при отправке формы обычным способом вы получите массив вида

CODE (htmlphp):
скопировать код в буфер обмена
  1. (
  2.     [chk] => Array
  3.         (
  4.             [0] => on
  5.         )
  6.  
  7. )

Если задавать значения то вместо on будет значение. И если какие-то чекбоксы не будут отмечены, то их не будет в массиве.

Получить значение одного чекбокса можно так:
CODE (javascript):
скопировать код в буфер обмена
  1. $(':checkbox').filter(':checked').val();


Если чекбоксов несколько то так:
CODE (javascript):
скопировать код в буфер обмена
  1. $.each($(':checkbox').filter(':checked'), function(k, v){
  2.         alert(this.value);
  3. });


Если нужно в массив собрать то перед циклом
CODE (javascript):
скопировать код в буфер обмена
  1. var chk_arr = [];

В цикле
CODE (javascript):
скопировать код в буфер обмена
  1. chk_arr.push(this.value);


PS! Хотя с массивом могу и ошибаться.

 

Powered by ExBB FM 1.0 RC1