2010-03-08 4 views
1

Я нахожусь в этом с ума.Флажок onclick не стреляет

Может ли кто-нибудь увидеть что-то не так с этой линией? Функция не будет срабатывать, щелкнув по этому флажку по какой-либо причине, но вызывающая функция работает нормально (если я скопирую точный атрибут 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> 

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

Спасибо!

EDIT: Поскольку пару человек спросил, вот функция checkSwap (все это делает сгенерировано предупреждение, чтобы я мог видеть, что мои onclicks работают, прежде чем добавить любой код):

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> 

EDIT: Хорошо, отменяя отдельную функцию что ограничение группы checkboxgroup на 1 флажок был проблемой ,

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

+0

У вас должна быть функция, называемая «checkSwap», где-то, вы можете отправить этот код? Также загляните в Firebug для Firefox для некоторых хороших инструментов отладки JavaScript. –

+0

Неужели почему клик не работает, но вы пытались привязать к «onchange»? Для флажка поведение должно быть идентичным. –

+3

Нет конца для элемента 'input' –

ответ

1

Синтаксис

document.page_form.match_35_0d 

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

Вы могли бы решить вашу проблему с помощью следующего вызова в 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

А, я не знал об этом (не сделал много JS, как я уверен, вы можете сказать). Вы передаете мне это «как аргумент», это имеет смысл вызвать из свойства onclick флажка. Однако, какой будет правильный синтаксис для доступа к этому конкретному флажку по идентификатору? У меня есть ярлык, который я бы также хотел, чтобы пользователи могли щелкнуть, чтобы каким-то образом запустить мою функцию checkswap, - из того, что я могу сказать, самый простой способ для меня сделать это просто для вызова checkbox.onclick, но я Не знаю, как указать конкретный объект checkbox по id. – javanix

+0

Используйте 'document.getElementById ('id')'. – BalusC

+0

Отлично, это работает нормально. Спасибо за помощь. – javanix

-1

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

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

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

0

эта функция делает огонь - проверено в поджигатель

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

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

0

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

+0

Это не полный ответ. Вопрос не содержит jQuery, поэтому ваш ответ должен обсуждать, КАК включать/использовать jQuery, затем готовую функцию и т. Д. –

1

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

Смежные вопросы