Отличается ли результат от нажатия пользователем кнопки jQuery UI и использования jQuery click ()? - PullRequest
0 голосов
/ 05 сентября 2010

У меня есть форма для создания объекта Ruby on Rails. Часть формы использует радиокнопки для выбора атрибута. Затем я использую jQuery UI для отображения кнопок , вот так.

<head>
<script type="text/javascript">
    $(document).ready(function() {
        $("#typeRadios").buttonset();
    });
</script>
</head>
<body>
<div id="typeRadios">
    <input id="character_chartype_a" name="character[chartype]" type="radio" value="A" /><label for="character_chartype_a">A</label>
    <input id="character_chartype_b" name="character[chartype]" type="radio" value="B" /><label for="character_chartype_b">B</label>
</div>
</body>

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

Проблема в том, что мне нужно иметь возможность программно нажимать одну из кнопок. На данный момент я делаю это:

// data.chartype = a
$("label[for='character_chartype_"+data.chartype+"']").click();

Это работает в том смысле, что визуально кнопка выглядит нажатой, но при отправке формы атрибут не сохраняется. Что вызывает это поведение? Спасибо за чтение.

РЕДАКТИРОВАТЬ: исправлена ​​опечатка

Ответы [ 2 ]

2 голосов
/ 05 сентября 2010

Вы должны нажать переключатель прямо так:

$("#character_chartype_" + data.chartype).click();

Он делает нажатие на кнопку, вам просто нужно сказать jQuery UI обновить его визуальное состояние впоследствии, используя метод refresh , например:

$("#typeRadios").buttonset("refresh");

Итак, в общем, это должно быть сделано:

$("#character_chartype_" + data.chartype).click();
$("#typeRadios").buttonset("refresh");
0 голосов
/ 05 сентября 2010
  1. идентификатор должен быть уникальным. просто сбой c & p?
  2. почему бы не "нажать" переключатель напрямую?
$("#character_chartype_" + data.chartype).click()
...