2010-09-21 4 views
0

У меня есть форма веб-страницы с флажком. Я пытаюсь установить флажок для проверки щелчка на том, что существует на другой части веб-страницы, используя onclick.Основная проблема с javascript

НИ ОДИН из них не похоже на работу (форма и флажок ID/NAME все настроено правильно):

<a href="#" onclick="document.getElementById('frmEditBasicBasic').active.checked=TRUE;"> test </a> 

<a href="#" onclick="document.frmEditBasicBasic.active.checked=TRUE;"> test </a> 

<a href="#" onclick="document.getElementById('active').checked=TRUE;"> test </a> 

<a href="#" onclick="window.document.getElementById('frmEditBasicBasic').active.checked=TRUE;"> test </a> 

<a href="#" onclick="window.document.frmEditBasicBasic.active.checked=TRUE;"> test </a> 

<a href="#" onclick="window.document.getElementById('active').checked=TRUE;"> test </a> 

ответ

2

Вы должны использовать <label> элемент вместо:

<label for="active">Test</label> 

Нажатие этой <label> автоматически установите флажок с ID active. (Если это текстовое поле, он будет фокусировать текстовое поле)


Чтобы ответить на этот вопрос, TRUE должен быть в нижнем регистре. (Javascript чувствителен к регистру)

+1

Это должно быть 'for', а не' target'. – BoltClock

+0

@BoltClock: исправлено; Благодарю. – SLaks

2

Вы должны использовать <label> для работы:

<label for="name">Name</label> 
... 
<input type="checkbox" id="name" name="name" /> 

Или

<label><input type="checkbox" id="name" name="name" /> Name</label> 

Edit

Если вы действительно хотите использовать JavaScript, чтобы сделать что-то особенное, вам нужно добавить return false; в событие onclick, чтобы предотвратить изменение страницы браузером. Вот пример Javascript (я никогда не использую встроенный Javascript):

document.getElementById('somelink').onclick = function(){ 
    document.getElementById('somecheckbox').checked = false; // Unchecks the checkbox 
    return false; // Prevents the browser from changing page 
};​​​​​​ 
0

JavaScript чувствителен к регистру, и его логические литералы строчные. Вместо этого попробуйте obj.checked = true. Кроме того, в некоторых браузерах (например, Chrome) getElementById() означает не более того, что он говорит: он получает элемент по идентификатору, а не по имени. Задайте свойство id, а также свойство name.

Следующие отлично для меня работает в IE и Chrome:

<body> 
    <a href="#" onclick="document.getElementById('active').checked=true;"> test </a> 
    <form> 
    <input type="checkbox" name="active" id="active" value="Car" /> 
    </form> 
</body> 

Некоторые или все другие версии, вероятно будет работать одинаково хорошо, если зафиксировать капитализацию и (если вы не используете IE) set id = "foo", а также name = "foo" (и если вы используете IE, помните, что у большинства из нас нет).

И, наконец, < ярлык > вещь, о которой говорят другие комментаторы, стоит знать и, вероятно, решит вашу проблему лучше, чем JavaScript.