2012-10-30 41 views
1

我有複選框,動態生成,當複選框被選中時,onchange方法工作正常,我的函數也被調用時,用戶未選中框onchange方法調用我的意圖功能的問題是,當框被選中時,頁面的一部分變爲活動狀態,這是很好的,但是當用戶取消選中該複選框時,頁面的該部分再次變爲活動狀態,並且複選框「checked」的值保持爲yes第一次檢查。有沒有辦法檢測用戶何時選擇取消選中,以便頁面的活動部分變爲非活動狀態。複選框問題(使用post和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> 
+0

你可以使用jQuery嗎? –

+0

[使用onchange複選框]的可能重複(http://stackoverflow.com/questions/13143337/check-box-using-onchange) –

回答

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); 
    }); 
} 
1

變化事件處理函數不是調用,直到選中狀態已更新:

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

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

Example

handleChange功能會告訴你,當複選框的值會在真正的改變或假。用它來隱藏和顯示你的div。

+0

謝謝你們,這是非常有益的。 – user1785939

+0

感謝阿布舍克你的解決方案很容易,它適合在 – user1785939

+0

我很高興,它幫助。 –