【问题标题】:Confirmation box with yes and No option, on drop down list's selected index change带有是和否选项的确认框,在下拉列表中选择索引更改
【发布时间】:2013-03-16 06:54:47
【问题描述】:

我正在使用以下代码显示确认框。

protected void cmbPayerBucketMain_SelectedIndexChanged(object sender, EventArgs e)
{ 
    ClientScriptManager CSM = Page.ClientScript;
    if (!String.IsNullOrEmpty(hiddenF1.Value) || !String.IsNullOrEmpty(hiddenF2.Value))
    {
          CSM.RegisterClientScriptBlock(this.GetType(), "Confirm", "show();", true);
    }

   //Some Code       
}

和函数show()如下

function show()
        (
            if(confirm('Chnages you made will be lost. Do you want to continue?'))
            { return true; }
             else
             { return false;
              }

              return 

        )

但无论我从确认框中选择了什么选项,它都会执行整个代码。在执行整个事件代码后,它会弹出消息框。如何限制组合框等待确认框的响应并仅在用户选择“确定”时才执行事件代码(或“是”也建议我更改确认框中按钮文本的方法。我想将 OK 设置为 YES,将 CANCEL 设置为 NO)。

【问题讨论】:

    标签: c# javascript jquery asp.net


    【解决方案1】:

    您无法更改确认对话框中按钮的文本。它们内置在浏览器中。

    如果您想对对话框进行更多控制,请使用 jQuery UI 中的 Dialog,但它不允许您阻止 UI 线程进行输入,即您不能做像 confirm(...) 这样简单的事情并得到下一行的结果。我建议您阅读一些有关如何处理用户与对话框交互结果的文档。特别是,请参阅文档中的 this example。我将尝试在此处改编一些简单的示例:

    <script>
    $(function() {
      $( "#dialog-confirm" ).dialog({
        resizable: false,
        height:140,
        modal: true,
        buttons: {
          "Yes": function() {
            // whatever you want to run when user clicks 'yes'.
            ...
            $( this ).dialog( "close" );
          },
          "No": function() {
            $( this ).dialog( "close" );
          }
        }
      });
    });
    </script>
    <div id="dialog-confirm">
       ...
    </div>
    

    只是一个小问题...如果您选择坚持使用内置的确认对话框,您可以将代码简化为

    function show() {
        return confirm('Chnages you made will be lost. Do you want to continue?');
    }
    

    【讨论】:

      【解决方案2】:

      它正在执行这个函数中的所有代码,因为它不是一个函数。您正在使用括号 () 而不是花括号 {}。还有方法 p.s.w.g.建议返回值更好。

      function show() { 
          return confirm('Changes you made will be lost. Do you want to continue?');
      } // use curly braces, not parens here
      

      【讨论】:

      【解决方案3】:

      请尝试以下代码进行确认框自定义。

      <script src="../Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
          <script src="../Scripts/jquery.confirm.js" type="text/javascript"></script>
          <script type="text/javascript">
      
                  function ShowConfirm(Title, Message, OkBtnCaption, CancelBtnCaption, ButtonID) {
                      var elem = $(this).closest('.item');               
      
                      $.confirm({
                          'title': Title,
                          'message': Message,
                          'buttons': {
                              OkBtnCaption: {
                                  'class': 'blue',
                                  'action': function () { $('#' + ButtonID).click(); },
                                  'id': 'okBtn'
                              },
                              CancelBtnCaption: {
                                  'class': 'gray',
                                  'action': function () { },
                                  'id': 'cancelBtn'
                              }
                         }
                      });
                      return false;
                  }   
            </script>
      

      希望对你有帮助。

      谢谢, 湿婆

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-12
        • 1970-01-01
        • 1970-01-01
        • 2012-05-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多