2010-04-15 19 views
1

嗨我有一些jquery複選框選中的問題。我想在選中複選框時執行任務。我的代碼是這樣的jquery chekbox選擇

$(document).ready(function() { 
     if ($('#chxGetText').is(':checked')) { 
      alert("OK"); 
     } 
    }); 

<input id="chxGetText" type="checkbox" /> 

但是,當我檢查複選框時沒有任何事情發生。有任何想法嗎?

回答

0

:checked只是一個選擇,它不綁定任何事件偵聽器。做這樣的事情:

$(document).ready(function() { 
    $('#chxGetText').change(function (e) { 
     if($(this).is(':checked')) { 
      alert('Checked'); 
     } 
     else { 
      alert('Unchecked'); 
     } 
    }); 
}); 

<input id="chxGetText" type="checkbox" /> 
+0

你正在使用'function(e)',但你沒有使用'e'。爲什麼不省略它? – 2010-04-15 07:03:31

+0

我用這個刪除了Mathias Bynens的評論。不是那個代碼煩擾了,因爲它沒有被使用。謝謝 – 2010-04-15 07:13:04

+0

@Mathias:我可能會在我自己的代碼中,除非我想檢查或調用事件對象的方法。只是想表明事件處理程序傳遞了一個事件對象。 – PatrikAkerstrand 2010-04-15 07:36:49

2

您需要將事件偵聽器綁定到複選框的更改事件。現在,您只會檢查是否在頁面加載時檢查複選框,即一次。

$(function() { 
$('#chxGetText').change(function() { 
    if ($(this).is(':checked')) { 
    alert('OK'); 
    } else { 
    alert('Not OK'); 
    }; 
}).trigger('change'); // trigger it on page load as well 
}); 

請注意,你應該觸發頁面加載時爲好,如果用戶選中複選框(因此.trigger('change')在我的代碼)後刷新頁面。

+0

大碼馬蒂亞斯代碼,我將使用這個其他網頁,我得到 – 2010-04-15 07:13:51

2

你沒有分配一個事件的元素,試試這個:

$(document).ready(function() { 
    $('#chxGetText').click(function(){ 
    if ($(this).is(':checked')) { 
    alert("OK"); 
    } 
    }); 
}); 
+0

這將工作過程中,對.trigger fosho,但它可能是一個好主意執行此檢查頁面加載以及:http://stackoverflow.com/questions/2643266/2643275#2643275 – 2010-04-15 07:04:20

+0

感謝您的工作很好 – 2010-04-15 07:06:57

+0

@ Dejan.S:歡迎您....... :) – Sarfraz 2010-04-15 07:33:35

-1

您需要爲複選框的onclick事件分配事件處理程序。當前的代碼只運行一次,當文檔被加載時,並且在此之後不會對任何狀態更改做出反應。

<input id="chxGetText" type="checkbox" /> 

function checkState(node) { 
    if (node.checked) { 
     alert("OK"); 
    } 
} 

$(document).ready(function() { 
    $('#chxGetText').click(function() { 
     // Bind checkState to click event 
     checkState(this); 
    }).each(function() { 
     // Initial check on load 
     checkState(this); 
    }); 
}); 
+1

使用jQuery和沒有突兀的JavaScript? – Sarfraz 2010-04-15 07:00:51

+0

你說得對,我應該(或者至少可以)完全在這個解決方案中跳過jquery。我只是試圖說明爲什麼最初的解決方案沒有按預期工作。 – 2010-04-15 07:07:27

+0

錯誤,不 - 你應該使用不引人注目的JavaScript。 jQuery與否。 – 2010-04-15 07:26:15

0

您可以像使用

jQuery("#chxGetText").click(function() { 
    if ($(this).is(':checked')) { 
     alert("#chxGetText is checked"); 
    } 
    else { 
     alert("#chxGetText is unchecked"); 
    } 
});