2010-10-05 13 views
3

链接的jsfiddle后按:本live linkhttp://jsfiddle.net/6UWZQ/1jQueryUI的.button()保持与它在Firefox打开用户界面对话框

的样子,如果你对任何行点击删除或编辑后点击取消,该按钮将继续(仅在Firefox)

强调我做的按钮是这样的:

$("input[type=submit]").addClass("abtn"); 
$("tbody a").addClass("abtn"); 
$(".abtn").button(); 

,我通过使用这样的提交按钮CSS类添加一个表单的确认对话框:

<script type="text/javascript"> 
     var currentFormconfirm; 
     $(function() { 
      $("#dialog-confirm-confirm").dialog({ 
      show: "drop", 
      hide: "fade", 
       resizable: false, 
       height: 220, 
       width: 400, 
       modal: true, 
       autoOpen: false, 
       buttons: { 
        'Yes': function() { 
         $(this).dialog('close'); 
         currentFormconfirm.submit(); 
        }, 
        'Cancel': function() { 
         $(this).dialog('close'); 
        } 
       } 
      }); 
      $(".confirm").click(function() { 
       currentFormconfirm = $(this).closest('form'); 
       $("#dialog-confirm-confirm").dialog('open'); 
       return false; 
      }); 
     }); 

</script> 
<div id="dialog-confirm-confirm" title="Confirm dialog"> 
    Are you sure you want to delete this foobar ? 
</div> 

和形式:

<form action="/awesome/foobar/Delete/7" method="post" class="fr"> 
        <input type="submit" class="confirm abtn ui-button ui-widget ui-state-default ui-corner-all" value="Delete" role="button" aria-disabled="false"> 
        </form> 
+0

看来你已经在我的Firefox 3.6.8(WIN7)固定它:-) – 2010-10-05 06:43:06

+0

@Darin季米特洛夫没有它仍然突出 – Omu 2010-10-05 06:44:47

+1

请出示一些代码。我们不打算调试服务器上正在发生的事情。这需要太多时间。尝试将问题缩小到最简单的示例,并在此处或甚至在jsfiddle.net上发布。有了这样的问题,社区就没有任何价值。 – 2010-10-05 06:48:54

回答

0

,因为它是一个jQuery错误,我的解决办法是要做到这一点,而不是按钮()的:

$(".abtn") 
       .hover(function() { $(this).addClass("ui-state-hover"); }, 
        function() { $(this).removeClass("ui-state-hover"); }) 
       .bind({ 'mousedown mouseup': function() { $(this).toggleClass('ui-state-active'); } }) 
       .addClass("ui-state-default").addClass("ui-corner-all") 
       .bind('mouseleave', function() { $(this).removeClass('ui-state-active') }); 
1

在 “jQuery的UI-1.8.7.custom.min.js” 文件,在的jQuery UI按钮面积,改变

.bind("mouseup.button",function(){ 
    if(c.disabled)return false; 
    a(this).removeClass("ui-state-active") 
}) 

.bind("mouseup.button",function(){ 
    if(c.disabled)return false; 
    a(this).removeClass("ui-state-active ui-state-hover ui-state-focus") 
}) 
4

晃的解决方案有效,但如果你不不想破解jquery ui源代码,另一种方法是在onClick中调用removeClass。例如:

button.click(function() { 
    button.removeClass("ui-state-focus ui-state-hover"); 
} 

但是请注意,这两个解决方案仍然有这个怪癖:如果您单击并释放它会以无焦点的,但如果你切换标签,回来它会被聚焦。

+0

另请参阅:http:/ /forum.jquery.com/topic/button-and-dialog-ui-state-focus-on-button-being-kept – Susan 2011-04-02 00:09:20

1

我知道这有点晚,但问题仍然存在,我已经做了一个实际的简单修复,它调用了按钮上的模糊功能。

$('#myButton').blur();

你打开对话框后立即调用blur()方法。

这里是一个片段:

$('#cbDate').button(); 
if(date == "infinite") 
{ 
    $('#cbDate').checked = true; 
    $('label[for=cbDate]').addClass('ui-state-active'); 
    //This is the interesting part 
    $('#cbDate, label[for=cbDate]').blur(); 
} 
else 
{ 
    $('#cbDate, label[for=cbDate]').blur(); 
} 
7

也有点晚了,但是......

结合以上建议,我能够通过包括本在$来解决问题网页上的所有按钮(文件)。就绪

$("button, input[type='button'], input[type='submit']").button() 
    .bind('mouseup', function() { 
     $(this).blur();  // prevent jquery ui button from remaining in the active state 
}); 
+0

不错,我一直在寻找一个可行的解决方案 - $(this).blur()诀窍!谢谢! – Sebastian 2014-12-29 16:02:29

0

如何添加到对话初始化:

open: function() { $('.ui-button').blur(); } 
0

下面在jQuery 1.8中运行良好。17:

$(document).ready(function() { 

    ... 

    $(".ui-button").live('click', function() { 
     $(this).blur(); 
     $(this).removeClass("ui-state-focus ui-state-hover"); 
    }); 
}) 
相关问题