Значение радио формы HTML в AJAX-загруженном div - PullRequest
3 голосов
/ 26 августа 2010

Я не могу получить значение радио в форме, загруженной AJAX в div.Вот код JavaScript, который я использую: (радио-имя 'categoryorie_add' в функции get):

function getCheckedValue(radioObj) {
if(!radioObj)
    return "";
var radioLength = radioObj.length;
if(radioLength == undefined)
    if(radioObj.checked)
        return radioObj.value;
    else
        return "";
for(var i = 0; i < radioLength; i++) {
    if(radioObj[i].checked) {
        return radioObj[i].value;
    }
}
return "";

}

function get(obj) {
    var poststr ="cat_title=" + escape(encodeURI(document.getElementById("cat_title").value )) +
                 "&cat_description=" + escape(encodeURI( document.getElementById("cat_description").value ))+
                 "&cat_id=" + escape(encodeURI( getCheckedValue(document.categorie_add.cat_id) ));
    makePOSTRequest('categorie.php', poststr);
}

, и у меня это в файле PHP:

            echo '<li><input type="radio" name="cat_id" id="cat_id" value="' . $value['cat_id'] . '" /> ' . htmlentities($value['cat_title']) . '<br />';

Ответы [ 5 ]

1 голос
/ 23 декабря 2010
1 голос
/ 20 октября 2010

Полагаю, проблема в том, как вы ловите радиообъект в DOM ....

Пожалуйста, напишите также код для вызова функции getCheckedValue.

Попробуй Jquery способом ...

$('#cat_id:checked').val();

Jquery is Rock.

Функция JavaScript:

function getCheckedValue(radioObj) {
  for ( var i in radioObj )if (radioObj[i].checked) return radioObj[i].value;
  return false;
}
0 голосов
/ 05 января 2011

Предполагая, что вы хотите не использовать jQuery, измените код на следующий:

function getCheckedValue(radioObjArr) {
  if(!radioObjArr)
    return "";
  for (var ii = 0; ii < radioObjArr.length; i++) {
    if (radioObjArr[ii].checked) {
      return radioObjArr[ii].value;
    }
  }
  return "";
}

И

function get(obj) {
  var poststr ="cat_title=" + escape(encodeURI(document.getElementById("cat_title").value )) +
             "&cat_description=" + escape(encodeURI( document.getElementById("cat_description").value ))+
             "&cat_id=" + escape(encodeURI( getCheckedValue(document.getElementsByName("cat_id")) ));
  makePOSTRequest('categorie.php', poststr);
}

Ваш текущий код неясен, хотя. Вы используете ID ("cat_id") для своей радиокнопки, но ваша функция getCheckedValue также поддерживает получение массива объектов. Идентификатор должен быть уникальным. Я немного изменил ваш код, так что вы всегда будете использовать массив объектов, даже если он имеет только один элемент.

0 голосов
/ 09 декабря 2010

В дополнение к тому, что говорит marvinlabs, попробуйте использовать инструменты разработки Chrome, чтобы увидеть, что происходит с кодом, возвращаемым ajax. Вы увидите, что такое ajax responseText, а также содержимое заголовков, отправленных на сервер. Это также включает поле и его значение.

0 голосов
/ 29 октября 2010

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

echo '<li><input type="radio" name="cat_id_' . $value['cat_id'] 
   . '" id="cat_id_' . $value['cat_id'] 
   . '" value="' . $value['cat_id'] . '" /> ' 
   . htmlentities($value['cat_title']) . '<br />';

Постарайтесь, чтобы jQuery сделал вашу жизнь проще. Вы можете получить свои значения так:

$('#cat_ul input[type=radio]:checked').val();

(при условии, что ваши теги

заключены в тег
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...