我在.net页面中有两个单选按钮,它们被转换为jQuery按钮la http://jqueryui.com/demos/button/#radio
当页面加载时,我选中了按钮2。单击按钮时,我正在触发回发事件。问题是你可以点击默认情况下在初始加载时选择的那个按钮,即按钮2,触发回发但是后面的.net代码中没有调用事件处理程序,因为单选按钮已被归类为选中(和在正常情况下不会允许回发发射)。
为了解决这个问题,我添加了e.PreventDefault()方法,但这会导致单击按钮1时出现问题,因为在调用单击处理程序之前,按钮设置为选中状态。因此,在以下代码中的每种情况下都会调用e.PreventDefault():
$(document).ready(function(){
$("[id*='rbPayable']").click(function(e){
if ($("[id*='rbPayable']").attr("checked"))
e.preventDefault();
else
setTimeout('__doPostBack(\'this.id\',\'\')', 0)
})
$("[id*='rbReceivable']").click(function(e){
if ($("[id*='rbReceivable']").attr("checked"))
e.preventDefault();
else
setTimeout('__doPostBack(\'this.id\',\'\')', 0)
})
});
加载页面并有效执行以下操作的最佳方式是: '如果选中rbReceivable,则不要做任何其他事情,否则进行回发。'
答案 0 :(得分:0)
在这里尝试类似的东西
$(document).ready(function() {
$('#radio').buttonset();
// create a handle for the initially checked button.
var checkedButton = $('.radio:checked');
// assuming all your radio buttons have 'radio' classname
$('.radio').click(function() {
var button = $(this);
if ( button[0].id == checkedButton[0].id ) {
return false;
} else {
// do stuff
checkedButton = button;
}
});
});
答案 1 :(得分:0)
我用另一种方式解决了这个问题:
$(document).ready(function(){
if ($("[id*='rbReceivable']").attr("checked"))
{
$("[id*='rbPayable']").click(function(e){
setTimeout('__doPostBack(\'this.id\',\'\')', 0)
})
}
else
{
$("[id*='rbPayable']").click(function(e){
setTimeout('__doPostBack(\'this.id\',\'\')', 0)
})
}
});
当选中的按钮加载为选中状态时,执行此操作会在另一个按钮上设置单击处理程序。