0

我想提示用户可能的值(我已存储在 JavaScript 数组中)显示为单选按钮,以选择文本框中的某些值是否为空并且用户单击“保存”telerik 的 Rad Ribbon Bar 按钮放置在母版页中。

我的问题是,当我点击保存时,服务器端方法不会等待 jQuery UI 对话关闭,我尝试了一个 while 循环,说 在这里等到对话框消失,但是突然飙升并挂断了我的页面:-(


  • 对于我的场景,我们正在从其他应用程序导入数据,因此不能使用 on change 事件
  • 我们的要求:保存时提示框有可用值,获取所选值并继续保存所选值,所以我不能添加按钮,隐藏它并触发 .click() 事件
  • 我的客户可能不欢迎“return false”;他们只想继续存钱

我有以下工作

  1. 调用保存按钮时,从内容页面调用客户端事件处理程序
  2. 上面的 JavaScript 函数检查值是否为空
  3. 从服务器端获取可用值并存储在数组中
  4. 动态创建 html(下面的代码)

代码片段 1(在内容页面中为 jQuery UI 对话声明 div)

<script src="../Scripts/jquery-1.9.1.min.js" type="text/javascript"></script>
<script src="../Scripts/JQueryUI/js/jquery-ui-1.10.3.min.js" type="text/javascript"></script>
<link href="../Scripts/JQueryUI/css/smoothness/jquery-ui.min.css" rel="stylesheet"
    type="text/css" />
<link href="../Scripts/JQueryUI/css/smoothness/jquery.ui.theme.css" rel="stylesheet" type="text/css" />

<div id="dialog-confirm" title="Tracking #">
    <span style="float: left; margin: 0 7px 20px 0; z-index: 999999 !important"></span>
    <p>
    </p>
</div>

代码片段 2(在 Save 触发 Click 事件时触发客户端功能)

function onSave(sender, args) {
var sButtonText = args.get_button().get_text();
if (sButtonText == "Save") {
    var
        trackingIDs = $('#<%=_tbPrevtrackerID.ClientID %>').val(),
        $trackerIDInputControl = $('#<%= tbtrackerID.ClientID %>'),
        currenttrackerIDValue = $trackerIDInputControl.val(),
        trackerIDs = trackingIDs.split(',').clean(''), //Extension Method
        noOftrackerIDsAvailable = trackerIDs.length,
        markup = 'trackerID is empty : <br/><br/><input type="radio" name="trackerIDGroup" value="" >Leave Empty</input><br/>';
    for (var i = 0; i < noOftrackerIDsAvailable; i++) {
        markup += '<input type="radio" name="trackerIDGroup" value="' + trackerIDs[i] + '">' + trackerIDs[i] + '</input><br/>';
    }

    if (currenttrackerIDValue == '') {
        $('#dialog-confirm').css({ 'display': 'block' });

        $("input:radio[name=trackerIDGroup]").click(function () {
            $trackerIDInputControl.val($(this).val());
            trackerIDChecked = true;
        });

        //Please note, if I'd use following it does work, but I am going to have multiple values
        //$trackerIDInputControl.val(prompt(markup, trackerIDs[0]));

        if ($("#dialog-confirm") != null) {            
            $("#dialog-confirm p").html(markup);
            $("#dialog-confirm").dialog({
                resizable: false,
                height: 300,
                width: 300,
                closeOnEscape: false,
                modal: false,
                buttons: {
                    "Ok": function () {
                        if ($trackerIDInputControl.val() != '') { 
                            $('#dialog-confirm').css({ 'display': 'none' });
                            $(this).dialog("close");
                        }
                    },
                    Cancel: function () {
                        $(this).dialog("close");
                        $('#dialog-confirm').css({ 'display': 'none' });
                    }
                }
            }).parent().appendTo(jQuery("body form"));
        }
    }
}
4

1 回答 1

1

我认为 Ajax Control Tool kit 有更适合你的东西,请看一下这个演示。

于 2013-07-12T20:46:42.380 回答