【问题标题】:Jquery UI - Dialog close, which button was pressedJquery UI - 对话框关闭,按下哪个按钮
【发布时间】:2013-08-03 00:53:06
【问题描述】:

我使用 jquery ui 对话框作为提示。 “提示”必须有“确定”和“取消”按钮。这里的问题是,它在触发 .dialog("close") 时提取对话框中的输入字段值,我唯一的验证是输入字段的长度必须超过 0 个字符。这意味着即使您键入内容并按取消,提示中的文本也将被提交。我的想法是找出按下了什么按钮...有人知道解决方案吗?

我当前的事件代码:

$("#addBusinessarea").click(function(){
    createPrompt("Add new business area", "Business area name:");
    $( "#prompt" ).bind( "dialogclose", function(event, ui) {
        if($("#promptValue").val().length > 0){
            // Add business area 
        }
    });
});

【问题讨论】:

  • 最好将事件处理程序简单地绑定到表单的提交事件。

标签: jquery jquery-ui jquery-ui-dialog jquery-ui-button


【解决方案1】:

要正确解决更改您为 jQuery UI 对话框定义按钮的方式。它可能看起来像这样(请注意,您可以为不同的按钮设置不同的点击处理程序):

$("#modal").dialog({
        buttons: {
            Yes: {
                text: 'Yeeees!',
                click: function() {
                    alert('I clicked yes!');
                }
            },
            No: {
                text: 'Hell no!',
                click: function() {
                    alert('I clicked no!');
                }
            }
        }
    })

【讨论】:

    【解决方案2】:

    老问题,但这个问题出现在我面前,我在jQuery UI Dialog buttons的帮助下找到了正确答案

    event.target 是您的按钮。

    $( "#prompt" ).bind( "dialogclose", function(event, ui) {
        if ($(event.target).text() != "Cancel") {
            if($("#promptValue").val().length > 0){
                // Add business area 
            }
        }
    });
    

    【讨论】:

    • 最糟糕的是,这是一个我不小心忘记的老问题。我不在出现问题的地方工作,所以我不确定问题到底出在哪里.. 但您的解决方案似乎侧重于按钮中的文本.. 如果系统对语言敏感,那么在某些情况下,该按钮不会将“取消”作为文本。但是感谢您注意到这个问题:-)
    • @ThorA.Pedersen 我的主要观点是您使用$(event.target) 来获取被按下的按钮,并使用$(event.target).text() 来获取该按钮的文本。从那里,您可以检查但是/无论您想要什么。这就是我希望根据问题标题看到的。 :-)
    猜你喜欢
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 2016-04-13
    • 2011-04-18
    • 2010-10-28
    • 1970-01-01
    相关资源
    最近更新 更多