Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Вытащить val() (https://javascript.ru/forum/dom-window/47908-vytashhit-val.html)

eskize 12.06.2014 00:52

Вытащить val()
 
Добрый вечер проблема следующая.
Есть код
$(document).ready(function(){

    $('#verify').click(function(event){
        event.preventDefault();
        this.disabled=true;
        answer = $('input:radio:checked').val();
        id = $('#id').val();
        question_id = $('#question_id').val();
        $.ajax({
            type:"POST",
            url:"verify_answer.php",
            data:"answer=" + answer + "&id=" + id + "&question_id=" + question_id,
            success:function(response){   
                $("Тут состоит проблема").css("background",response);
            }
        })
    });
});

Смысл его таков - при клике на кнопку - отправляется ajax запрос и в response - идет ответ либо red либо green.
Есть вот такая форма
echo "<form action='take_test.php?' method='GET'>"
            . "<input type='hidden' name='id' value='$this->id' id='id'>"
            . "<input type='hidden' name='question_id' value='$question_id' id='question_id'>";

        shuffle($question->answers);
        $i = 0;
        foreach ($question->answers as $answers)
        {
            echo "<div class='answers'>";
            echo "<input type='radio' name='answer' value='" . $answers . "'checked>"
                . $answers;
            echo "<br />";
            echo "</div>";
        }
        echo "<input type='submit' value='Проверить' id='verify'>";
        echo "<input type='submit' value='$submit'>"
            . "</form>";

В ней есть вопрос и 4 ответа в тегах radio
смысл ajax запроса в том, что-бы он проверил выбранный ответ и подсветил его или red или green, зависит от правильности ответа.
Все работает кроме одного но, проблема следующая, я знаю как подсветить все ответы red или green(на функции все понятно)
Но я не знаю как подсветить именно checked
p.s. тему неправильно назвал, но пока не нашел где можно сделать ренейм)

рони 12.06.2014 10:20

eskize,
не очень понятно -- значение отмеченного вы взять и отправить смогли а подсветить его проблема?

eskize 12.06.2014 17:54

Ну беру его я таким способом
$('тут наше значение').val()

А как к этому добавить
.css()
?

рони 13.06.2014 15:20

eskize,
var b = $('тут наше значение');
b.val()
b.css()

eskize 14.06.2014 02:42

name = $("input:radio:checked") у нас значение получается
name.css() - Не пашет
name.val() - пашет

рони 14.06.2014 07:54

Цитата:

Сообщение от eskize
name.css() - Не пашет

где код?

eskize 14.06.2014 18:01

$(document).ready(function(){

    $('#verify').click(function(event){
        event.preventDefault();
        this.disabled=true;
        answer = $('input:radio:checked').val();
        id = $('#id').val();
        question_id = $('#question_id').val();
        $.ajax({
            type:"POST",
            url:"verify_answer.php",
            data:"answer=" + answer + "&id=" + id + "&question_id=" + question_id,
            success:function(response){
                $("input:radio:checked").css("background",response);
            }
        })
    });
});

в response - либо red либо green, если поставить просто какой-то див - все хорошо подсвечивает, но если я подставлю див - мне подсветит все ответы, а не тот который был выбран.
Конечно можно сделать несколько дивов - но думаю есть более корректное решение.

рони 14.06.2014 18:57

eskize,
:-?
$(document).ready(function(){

    $('#verify').click(function(event){
        event.preventDefault();
        this.disabled=true;
        var b = $('input:radio:checked'),
            answer = b.val(),
            id = $('#id').val(),
            question_id = $('#question_id').val();
        $.ajax({
            type:"POST",
            url:"verify_answer.php",
            data:"answer=" + answer + "&id=" + id + "&question_id=" + question_id,
            success:function(response){
               b.css("background",response);
            }
        })
    });
});

eskize 14.06.2014 22:41

Не вижу разницы в b.css между $("Input:radio:checked").css
Не подсвечивает так. И я понял почему, потому-что оно выбирает только input radio, а не текст возле него.
Как мне выбрать текст возле него? Текст возле него идентичен b.val()

рони 14.06.2014 22:50

Цитата:

Сообщение от eskize
Не вижу разницы в b.css между $("Input:radio:checked").css

b один и тотже элемент -- $("Input:radio:checked") тот который нажат на момент прихода ответа от сервера
Цитата:

Сообщение от eskize
Как мне выбрать текст возле него?

код покажите html

eskize 14.06.2014 23:24

foreach ($question->answers as $answers)
        {
            echo "<div class='answers'>";
            echo "<input type='radio' name='answer' value='" . $answers . "'checked>"
                . $answers;
            echo "<br />";
            echo "</div>";
        }

https://www.dropbox.com/s/5poo3wzcni...2023.24.42.png

рони 14.06.2014 23:28

eskize,
c html значит никак :cray:

eskize 14.06.2014 23:30

Что простите?

рони 14.06.2014 23:32

eskize,
может http://htmlbook.ru/html/label добавите чтоб было чего красить

рони 14.06.2014 23:33

Цитата:

Сообщение от eskize
Что простите?

html != php

eskize 14.06.2014 23:39

Это понятно, но я думаю и так видно.

eskize 14.06.2014 23:40

Цитата:

Сообщение от рони (Сообщение 316545)
eskize,
может http://htmlbook.ru/html/label добавите чтоб было чего красить

Можете навести пример с label?
Я знаю как использовать lavel, но не знаю как подсветить, тоже думал

рони 14.06.2014 23:41

eskize,
неа невидно ))) и как насчёт label?

рони 14.06.2014 23:43

eskize,
<label><input type="..."> Текст</label>
b.parent().css()

рони 14.06.2014 23:55

eskize,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
  	$(function ()
  	  {
  	    $('.answers').click(function ()
  	      {
  	        var b = $(':checked');
  	        b.parent().css({background: 'rgba(0, 204, 51, 1)'})
  	      }
  	    )
  	  }
  	)
  </script>
</head>

<body>
<div class='answers'>
<label><input type='radio' name='answer'> Текст</label>
<label><input type='radio' name='answer'> Текст</label>
<label><input type='radio' name='answer'> Текст</label>
</div>
</body>
</html>

eskize 15.06.2014 00:19

Именно это меня интересовало, огромное спасибо)
Даже спасибище)

eskize 15.06.2014 00:23

Может подскажете еще, как сделать предупреждение на кнопки обновить и назад. Т.е. Если юзер обновляет страницу я вывожу предупреждение что тест начнется сначала. Так же и с обновить)
$(window).bind('beforeunload',function(){

     //save info somewhere

    return 'are you sure you want to leave?';

});

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


Часовой пояс GMT +3, время: 08:40.