1

我正在尝试使用 Javascript 来检测是否已选中复选框。我的计划是允许用户选中复选框以将字母标记为已打印,然后使用 Ajax 更新数据库。

这是我正在使用的代码。

<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.

4

6 回答 6

6

您应该为您的 javascript 方法使用不同的名称,因为输入的布尔检查字段只是隐藏了您定义的那个...

于 2012-11-14T10:46:31.110 回答
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/

于 2012-11-14T10:56:25.433 回答
1

只需将您使用的函数名称更改为“checked(this.id)”即可。我试过check1(this.id)。有效

于 2012-11-14T10:51:53.087 回答
1

您可以更改函数名称以获得答案,如下所示。它对我有用

function IsChecked(id)
{
    var remember = document.getElementById(id);
    if (remember.checked){
       alert("checked");
    }else{
       alert("You didn't check it!");
    }
}
于 2012-11-14T10:54:31.290 回答
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');
});
于 2012-11-14T10:54:42.940 回答
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

    }

  });
});
于 2012-11-14T10:49:54.620 回答