我想提示用户可能的值(我已存储在 JavaScript 数组中)显示为单选按钮,以选择文本框中的某些值是否为空并且用户单击“保存”telerik 的 Rad Ribbon Bar 按钮放置在母版页中。
我的问题是,当我点击保存时,服务器端方法不会等待 jQuery UI 对话关闭,我尝试了一个 while 循环,说 在这里等到对话框消失,但是突然飙升并挂断了我的页面:-(
- 对于我的场景,我们正在从其他应用程序导入数据,因此不能使用 on change 事件
- 我们的要求:保存时提示框有可用值,获取所选值并继续保存所选值,所以我不能添加按钮,隐藏它并触发 .click() 事件
- 我的客户可能不欢迎“return false”;他们只想继续存钱
我有以下工作
- 调用保存按钮时,从内容页面调用客户端事件处理程序
- 上面的 JavaScript 函数检查值是否为空
- 从服务器端获取可用值并存储在数组中
- 动态创建 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"));
}
}
}