1

我有动态生成的复选框,当复选框被选中时,onchange方法工作正常并且我的函数也被调用,当用户取消选中该框时,onchange方法调用我的预期函数问题是当复选框被选中时页面变为活动状态很好,但是当用户取消选中复选框时,页面的该部分再次变为活动状态,并且复选框“已选中”的值在第一次被选中后保持为是。有没有办法检测用户何时选择取消选中以使页面的活动部分变为非活动状态。

我可以在没有提交表单的情况下发送复选框状态吗?是否必须提交才能发布。我必须为此使用 Java 脚本吗?

我试过这个我有问题

<script type="text/jscript">
//this funciton will be called when user checks a check box. 
function edit(){


     //get selected category from the form 
    //var formName = 'choose';
    //var Category = document[formName]['choose'].value;


    //check if browser suports ajax
    var xmlhttp = null;      
    if(typeof XMLHttpRequest != 'udefined'){
      xmlhttp = new XMLHttpRequest();
    }

    else if(typeof ActiveXObject != 'undefined'){
        xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
    }

    else 
        throw new Error('You browser doesn\'t support ajax');


    //open connection with activateImages.php to recieve the active images as an acho
    xmlhttp.open("GET", "activateImages.php",true);         

    //echeck if ready to recieve        
    xmlhttp.onreadystatechange = function (){

    if(xmlhttp.readyState == 4)
      window.activate(xmlhttp);
    };

    xmlhttp.send(null);
    }

    //recieve the active images then insert them in the specified location of the page. 
    function activate(xhr){

        if(xhr.status == 200){
            document.getElementById('images').innerHTML = xhr.responseText;

        }
        else 
            throw new Error('Server has encountered an error\n'+
            'Error code = '+xhr.status);

}

</script>
4

2 回答 2

1

在检查状态更新之前不会调用更改事件处理程序:

<label><input type='checkbox' onchange='handleChange(this);'>Checkbox</label>

function handleChange(cb) {
  console.log("Changed, new value = " + cb.checked);
}

例子

handleChange 函数会告诉您复选框的值何时会更改为真或假。用它来隐藏和显示你的 div。

于 2012-10-30T17:30:57.927 回答
0

我的建议是,最好使用像jQuery这样的库来处理这种复杂的请求。主要原因是跨浏览器兼容,更容易实现。对于您的相同逻辑,您可以在 jQuery 中这样做。

首先在标题中包含脚本。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>

接下来是 AJAX GET 请求和函数edit()

function edit(){
    $.get("activateImages.php", function(data) {
        $("#images").html(data);
    }).error(function(e){
        throw new Error('Server has encountered an error\n' + 'Error code = ' + e);
    });
}
于 2012-10-30T17:24:44.913 回答