我在< label>内有一个复选框我想要那个复选框,当选中或取消选中时,触发一个功能。 我将一个onchange触发器附加到复选框,但是在IE6中,触发器仅在焦点转离复选框后才会触发,而在FF3和Chrome中它会立即触发。 我删除了onchange触发器并将onclick触发器附加到< label>但是现在当标签被点击一次时触发器会触发两次(enyone知道原因吗?)......
我的问题是:如果通过点击它或标签上的方式选中或取消选中复选框,我怎样才能触发该功能。
感谢。
答案 0 :(得分:6)
假设您不想要花哨的ASP / JQuery解决方案,只需将该函数附加到复选框本身的onClick就可以了。
(当然,如果你想让函数的行为不同,你需要检查函数中复选框的当前状态,具体取决于复选框是否被选中。)
答案 1 :(得分:3)
正如“Electrons_Ahoy”所说,你应该能够简单地将onclick
处理程序附加到checkbox元素。当用户点击标签而不是复选框时,也应该调用此处理程序。
HTML:
<label><input type="checkbox" id="myCheckbox" />My Checkbox</label>
JavaScript的:
document.getElementById("myCheckbox").onclick = function() {
if (this.checked) {
alert("Checkbox was checked.");
}
else {
alert("Checkbox wasn't checked.");
}
};
以上代码似乎在Safari 4和Firefox 3中正常工作(我不确定它在IE中是如何工作的。)
史蒂夫
答案 2 :(得分:1)
不确定使用Prototype是否适合您,但如果是这样的话,您可以这样做(这假定为Prototype 1.6。针对早期版本编写的代码会略有不同):
HTML:
<label><input type="checkbox" id="myCheckbox" />My Checkbox</label>
JS:
$('myCheckbox').observe('click', function(cbox)
{
var cbox = $('myCheckbox');
//do work in here.
//cbox is the DOM element that represents your checkbox
}
);
这样做比“裸”的JS方法(在我看来)稍微好一些,而且它也更安全一些。
答案 3 :(得分:1)
感谢您的所有回复。
@Electrons_Ahoy和@Steve:你很紧张。我的问题是我把复选框放在了labe中,所以我做了以下事情: 我拿了标签外面的复选框,只在复选框上放了onclick触发器,它工作正常。
我还想清楚为什么当复选框位于标签内并且onclick触发器位于标签上时,trgger会触发两次: 这是因为当我点击标签时,复选框上的点击被模拟,复选框位于标签内,点击在标签上模拟,duuuuuhhh:)
答案 4 :(得分:-1)
您可能需要打开autopostback属性:
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.checkbox.autopostback.aspx
<asp:CheckBox id="checkbox1" runat="server"
AutoPostBack="True"
Text="Include 8.6% sales tax"
TextAlign="Right"
OnCheckedChanged="Check_Clicked"/>