2012-11-14 6 views
1

Я пытаюсь использовать Javascript, чтобы определить, был ли установлен флажок. Мой план состоит в том, чтобы позволить пользователю выбрать этот флажок, чтобы пометить письмо как напечатанное, а затем использовать Ajax для обновления базы данных.Могу ли я использовать Javascript для определения того, был ли установлен флажок?

Вот код, который я использую.

<label for="printed">Printed</label> 
<input type="checkbox" name="8200" id="8200" value="P" onclick="checked(this.id);" /> 
<script type="text/javascript"> 
    function checked(id) { 
    var remember = document.getElementById(id); 
    if (remember.checked){ 
     alert("checked"); 
    }else{ 
     alert("You didn't check it!"); 
    } 
    } 
</script> 

Все я получаю в ответ ошибка говоря Uncaught TypeError: boolean is not a function from Google Chrome and checked is not a function from Firefox.

+0

это решение JQuery нормально? –

+0

Что-то не хватает в вашем коде. – gdoron

+0

Да, я рад использовать jQuery, хотя до сих пор ему не удавалось ... – jampez77

ответ

6

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

+2

Yep ... переименовать его ischecked или аналогичный и обновить событие onclick – Dale

+0

отлично! :) думал, что это может быть что-то простое, я приму это через 8 минут, когда это позволит мне – jampez77

+0

thanx для этого ... –

0

Вот что у вас есть в растворе JQuery и будет работать для каждого флажка на странице (добавить класс к селектору, чтобы иметь возможность применить это только некоторые флажков)

$(function(){ 
    var remember; 
    $('input:checkbox').click(function(){ 
    remember = $(this).attr('id'); 

    if($(this).is(':checked')){ 
     // Checkbox is checked 

    } else { 
     // Checkbox is NOT checked 

    } 

    }); 
}); 
+1

1) Но здесь нет тега jQuery. 2) вы слишком много используете jQuery. 3) добавление большего количества идентификатора в селектор делает его неэффективным. Извините, что выбрал вас. – gdoron

+0

в его защиту я сказал, что я был открыт для решения jQuery – jampez77

+0

@gdoron Я использую слишком много JQuery? LOL wtf? Вы используете слишком много писем в своих предложениях ... –

1

Просто измените имя своей функции как «checked (this.id)». Я пробовал check1 (this.id). Он работал

1

Вы можете изменить имя функции, чтобы получить ответ следующим образом. Он работал для меня

function IsChecked(id) 
{ 
    var remember = document.getElementById(id); 
    if (remember.checked){ 
     alert("checked"); 
    }else{ 
     alert("You didn't check it!"); 
    } 
} 
1

Поскольку вы получили другое решение JQuery я не доволен, я дам вам мое решение JQuery:

<input type="checkbox" name="8200" id="theid" value="P" /> 

// 8200 isn't a valid id in HTML4, it can't start with a number 
$('#theid').change(function(){ 
    if (this.checked) 
     alert('checked'); 
    else 
     alert('unchecked'); 
}); 
+0

Я не согласен, для этого вам потребуется написать функцию JQuery для каждого флажка, который вы хотите применить это к. Вы не заметили мою заметку о добавлении имени класса? –

+0

@PastorBones. Он не упомянул, что у него более одного флажка, почему я должен использовать селектор классов? И, допустим, у него более одного, кто сказал, что обработка изменений должна быть одинаковой для всех из них? – gdoron

2

Вы должны изменить название JavaScript метод.

HTML:

<label for="printed">Printed</label> 
<input type="checkbox" name="8200" id="8200" value="P" onclick="isChecked(this.id);" /> 

JS:

function isChecked(id) { 
     var remember = document.getElementById(id); 
     if (remember.checked){ 
      alert("checked"); 
     }else{ 
      alert("You didn't check it!"); 
     } 
    } 

Посмотрите на эту JSFiddle: http://jsfiddle.net/6dx6A/39/