Флажок на клике не стреляет - PullRequest
1 голос
/ 09 марта 2010

Я на этом сошел с ума.

Может кто-нибудь увидеть что-то не так с этой строкой? Функция не срабатывает, если по какой-то причине щелкнуть флажок, но вызывающая функция работает нормально (если я скопирую точный атрибут «onclick» в метку для флажка, он отлично работает).

<input type="checkbox" name="match_35_0" id="match_35_0d" value="d0" onclick="checkSwap(document.page_form.match_35_0d, document.page_form.match_35_0)"></input> 

Если кто-нибудь может понять, почему это не сработает, я был бы очень признателен.

Спасибо!

РЕДАКТИРОВАТЬ: так как пара человек спросили, вот функция checkSwap (все, что она делает, это генерирует предупреждение, чтобы я мог видеть, что мои щелчки работают, прежде чем я добавлю любой код):

function checkSwap(radioid, groupid) {
alert("radio: " + radioid + " group: " + groupid);}

А вот и весь пример ячейки таблицы, в которой стоит соответствующий флажок (извиняюсь за форматирование, пример кода, похоже, не хочет принимать мои новые строки):

<td><label onclick="checkSwap(document.page_form.match_34_0d,document.page_form.match_34_0)" for="match_34_0">N</label><input type="checkbox" name="match_34_0" id="match_34_0d" value="d1"  onclick="checkSwap(document.page_form.match_34_0d, document.page_form.match_34_0)"></input></td>

РЕДАКТИРОВАТЬ: Хорошо, проблема заключалась в отмене отдельной функции, которая ограничивала группу флажков до 1.

Код, который делает ограничение, устанавливал атрибут onclick для каждого флажка, и это, очевидно, переопределяет атрибут tag-set. Я должен выяснить, как взломать его.

Ответы [ 5 ]

1 голос
/ 01 мая 2012

Если готовый метод JQuery уже определен, то событие onclick Chek box не работает Вы можете запустить событие, если вы добавите событие нажатия Jquery внутри ready. Не уверен, что это проблема IE ..?

1 голос
/ 09 марта 2010

Этот синтаксис

document.page_form.match_35_0d

фактически ищет в форме с name из page_form элемент ввода с name из match_35_0d. Но вы на самом деле установили его как id флажка, в котором определяется щелчок мышью.

Вы можете решить вашу проблему с помощью следующего вызова в onclick:

checkSwap(this, document.page_form.match_35_0)

Кстати, флажок не совпадает с радиокнопкой, и вы фактически не передаете идентификаторы функции, а вместо этого целые элементы. Перепишите свою функцию как

function checkSwap(checkbox, group) {
    var checkboxId = checkbox.id;
    for (var i = 0; i < group.length; i++) {
        var element = group[i];
        var elementId = element.id;
        // ...
    }
    // ...
}

Чтобы получить элемент по ID, просто используйте Document#getElementById().

var element = document.getElementById('someId');
0 голосов
/ 01 мая 2012

Если у вас уже есть функция готовности Jquery, атрибут Onclick в ckeckbox не сработает. Вы должны добавить событие нажатия в Jquery. Только тогда это работает Как ниже. Я не знаю причину.

$('#cbFinalAttest').click(function (event) {  
   ...
}
0 голосов
/ 09 марта 2010

эта функция срабатывает - проверено в firebug

<input type="checkbox" name="match_35_0" id="match_35_0d" value="d0" onclick="alert('55')"></input>

Вы должны проверить 'checkSwap'

0 голосов
/ 09 марта 2010

Было бы проще передать this в функцию, тогда параметр был бы ссылкой на элемент, вызвавший функцию. Так что вы можете сделать:

function checkSwap(self){
    alert(self.id);
}

Редактировать: Кроме того, document.page_form.match_35_0.id получит идентификатор, а не так, как у вас.

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