【问题标题】:radio button change only after confirm() returns true只有在 confirm() 返回 true 后才会更改单选按钮
【发布时间】:2012-03-28 18:33:41
【问题描述】:

我的 html 网站中有一组单选按钮。当用户更改选择时,我会通过 confirm('') 函数显示一个对话框。如果用户确认更改,我只想更改选择 - 否则只需取消事件。我现在的问题是,在值发生更改并且更改已经完成之后,我才得到一个事件。我怎样才能防止这种行为?

【问题讨论】:

  • onCancel 按钮单击您可以使用javascript进行重置,这可能会对您有所帮助。

标签: javascript jquery html jsf


【解决方案1】:
$('.rdio').click(function(){
 var cnfrm = confirm('Are you sure?');
 if(cnfrm != true)
{
 return false;
}

})​

现场演示http://jsfiddle.net/cTzVg/

【讨论】:

  • 又好又简单,特别是因为你可以用一个衬里return confirm('Sure?'); 替换整个东西,但问题是它在 IE 中不起作用。按取消不会恢复先前的选择。因此,将先前的选择保存在页面范围的变量中看起来是不可避免的。
  • 这对我有帮助!注意:您不必检查cnfrm != true,因为确认返回布尔值true“确定”和false“取消”,您所要做的就是重新排列您的if - else。谢谢:)
  • 感谢您提供解决方案,但这在 IE 中不起作用。 On Cancel button IE 取消选择所有单选按钮。请提供在 IE 中工作的任何解决方法。
  • 需要获取 current_radio 并在 return false 之前添加 current_radio.checked= false 在没有选中单选按钮开始的情况下(如上面链接的 jsfiddle)。否则,即使确认返回 false,也会检查单选按钮。演示:jsfiddle.net/6b46y4sm/1
【解决方案2】:

这并不容易,因为浏览器之间没有一致的事件适合做你需要做的事情。但是,您从标签中说您正在使用 jQuery,所以这是一个使用状态跟踪来根据您的函数返回进行恢复的解决方案:

var currentradio= $("input[name='pick_up_point']:checked")[0];
$("input[name='pick_up_point']").change(function(event) {
    var newradio= $("input[name='pick_up_point']:checked")[0];

    if (newradio===currentradio)
        return;
    if (confirm('Your question here')) {
        currentradio= newradio;
    } else {
        currentradio.checked= true;
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-10
    • 2017-08-19
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    相关资源
    最近更新 更多