Ajax调用复选框ie浏览器


ajax call checkbox internet explorer

我在使用internet explorer和ajax时遇到了这个小问题。首先,我只使用php,一切正常,但因为我不想重新加载页面,所以我使用ajax。

我有一个带有复选框的表单。当有人单击复选框时,将调用我的ajax,并在数据库中更改输入。在firefox中没有问题,但在ie中就不行了。

这是我的一部分代码:

<script language="javascript" type="text/javascript">
function changefield($doss, $display){
    $.get("update.php",{dossier: $doss, CSQ_DISPLAY:$display});
    alert("test");
}
</script>

echo '<form id="'.$r ['BC_DOSSIER'].'" method="get" action="">
<input type="checkbox" name="CSQ_DISPLAY" '.$checked .' onchange="changefield('''.$r ['BC_DOSSIER'].''',this.checked)">
</form>'; 

似乎在资源管理器中,只有当复选框被选中时,我才会得到警报。(问题是因为它首先读取数据库,如果它必须检查或不检查,所以您可以稍后更改它)。

有人知道我哪里做错了吗?

提前感谢你的回答。

我更喜欢这样定义它,我讨厌在我的HTML中使用onclick:

edit FIXED(注册到change而不是click)
edit包裹在$(document).ready()
edit添加click事件

<?php
  echo '<input class="ajax_check" id="check_'.htmlspecialchars($r['BC_DOSSIER']).'" type="checkbox" name="CSQ_DISPLAY" '.$checked .' />';
?>
<script type="text/javascript">
  $(document).ready(function() {
    $('input.ajax_check').click(function() {
      this.blur();
    });
    $('input.ajax_check').change(function() {
      var dossierId = this.id.slice(6);
      var isChecked = (this.checked) ? 1 : 0; // better to explicitly convert bool to int for HTTP requests
      $.get('update.php',{
        dossier: dossierId,
        CSQ_DISPLAY: isChecked
      });
      alert('test');
    });
  });
</script>

这将注册处理程序与className 'ajax_check'的所有输入,而不会留下一个函数混乱的窗口对象,也不会搞乱你的HTML。试一试,看看它是否能解决问题——它可能不像它做的基本上是一样的事情,但这是一个更好的方法。如果你还有问题,来找我,我们来调试。

注意,使用这种方法,重要的是在 DOM准备好之后执行<script> ,所以它应该在复选框之后的正文中定义,或者(更好)包装在$(window).load()或(最好)$(document).ready()中。

在你的代码中,回退函数值不会为IE传递。

<input type="checkbox" name="CSQ_DISPLAY" '.$checked .' onchange="changefield('''.$r ['BC_DOSSIER'].''',this.checked)">
上面代码中的

即onchange="changefield(' "。$r ['BC_DOSSIER'].''',this.checked)"check不适用于IE,所以你可以传递this并在四个函数中获取值,这将适用于所有浏览器。例如:像这样

<input type="checkbox" name="CSQ_DISPLAY" '.$checked .' onchange="changefield('''.$r ['BC_DOSSIER'].''',this)">

并获取函数内的checked属性。