Javascript не распознает начальное значение флажка - PullRequest
0 голосов
/ 20 августа 2011

Я пытаюсь создать функцию переключения в Javascript для флажка HTML, где, если флажок установлен / снят, javascript обнаруживает это с помощью оператора if и выполняет соответствующее действие (в этом случае добавление / удаление параметра URL и обновление страницы с новым набором результатов)

Сейчас я просто пытаюсь проверить функциональность переключения javascript с помощью всплывающих предупреждений, когда флажок установлен / снят.

Вот код JavaScript:

<script type="text/javascript" language="javascript">
function filterToggle(attribName)
{
  var elementII = document.getElementById(attribName);
  if(elementII.checkedTag == "unchecked"){
     elementII.checkedTag = "checked";
     alert("checked");
  }
  else {
    elementII.checkedTag = "unchecked";
    alert("unchecked");
  }
}
</script>

И вот где флажки создаются несколько раз внутри цикла php foreach:

$BODY .= sprintf("<input type=\"checkbox\" onclick=\"filterToggle('%s')\" name=\"%s\" value=\"%s\" id=\"%s\" checkedTag=\"unchecked\"/> %s ",
                 $attribName, $attribName, $attribClass, $attribName, $attribName, $attribName);

Таким образом, идея заключается в том, что ящики должны загружаться на страницу без флажка (что они есть), и когда я проверяю их, оповещение должно быть «проверено», а когда я снимаю отметку, а оповещение - «не проверено». Все здесь работает отлично, за исключением того факта, что когда я сейчас отмечаю флажки, они говорят «не проверено», а когда я снимаю флажок, они говорят «проверено». Таким образом, кажется, что javascript изменяет значение атрибута checkedTag в флажках и отвечает соответственно: , но , он не признает тот факт, что значение флажка изначально установлено как «unchecked», так что вместо установив его на непроверенный и выдавая предупреждение «непроверенный» при первом нажатии, как это в настоящее время, по-видимому, должно быть установлено на «проверено» и оповещение «проверено».

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

Вот пример кода вывода в JSFiddle - http://jsfiddle.net/intenex/s45JC/3/, с 3 флажками, отображающими ошибку, описанную выше.

Спасибо!

Ответы [ 4 ]

2 голосов
/ 20 августа 2011

Просто не добавляйте атрибут checked к элементам, которые не следует проверять.

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

Пример:

HTML

<input type="checkbox" onchange="filterToggle(this)" name="Below $110" value="Price Range" id="Below$110"  />

JavaScript

function filterToggle(element) {
  if(element.checked){
     alert("checked");
  }
  else {
     alert("unchecked");
  }
}

DEMO

Примечание: Элемент id s не может содержать пробелы.

1 голос
/ 25 августа 2011

Не забудьте включить var elementII = document.getElementById (element), поскольку идентификатор элемента не совпадает с идентичным самому элементу

function filterToggle(element){
var elementII = document.getElementById(element)
if(elementII.checked){
alert("Checked");
}
else{
alert("Unchecked");
}
}
1 голос
/ 20 августа 2011

Откуда берется проверенный тег?это не часть DOM.Вместо этого вы должны использовать проверенный атрибут.

1 голос
/ 20 августа 2011

http://jsfiddle.net/efortis/VqyLY/

Способ jQuery

 $('input').change(function() {
   alert("Is checked? " + $(this).is(':checked'));
});

Редактировать

Вот http://jsfiddle.net/efortis/s45JC/4/ ваш пример работает

$('input').change(function() {
   alert("Hello... " + $(this).attr('id'));
});
...