我正在使用jQuery对话框插件,因为我需要在用户点击时做出决定
这是我的代码
<script type='text/javascript'>
$(function() {
//destroying dialog
$('#rdy').tipsy();
$('#flt').tipsy();
$('#num').tipsy();
$('#tpe').tipsy();
$('#reg').tipsy();
$('#etd').tipsy();
$('#dla').tipsy();
$('#dp').tipsy();
$('#rem').tipsy();
$('#to').tipsy();
$('#eta').tipsy();
$('#arr').tipsy();
});
$(function(){
var fDep=document.forms.fDep;
var flt=fDep.elements['flt[]'];
var num=fDep.elements['num[]'];
var reg=fDep.elements['reg[]'];
var etd=fDep.elements['etd[]'];
var dla=fDep.elements['dla[]'];
var dep=fDep.elements['dep[]'];
var eta=fDep.elements['eta[]'];
var arr=fDep.elements['arr[]'];
for (var i=0;i<flt.length;i++){
//var aCtrl=ctrls[i];
//window.alert(etd[i].value);
$(flt[i]).mask("aa?a");
}
for (var i=0;i<num.length;i++){
//var aCtrl=ctrls[i];
//window.alert(etd[i].value);
$(num[i]).mask("99?999");
}
for (var i=0;i<etd.length;i++){
//var aCtrl=ctrls[i];
//window.alert(etd[i].value);
$(etd[i]).mask("99:99");
}
for (var i=0;i<dla.length;i++){
$(dla[i]).mask("99:99");
}
for (var i=0;i<dep.length;i++){
$(dep[i]).mask("99:99");
}
for (var i=0;i<eta.length;i++){
$(eta[i]).mask("99:99");
}
for (var i=0;i<arr.length;i++){
$(arr[i]).mask("99:99");
}
for (var i=0;i<reg.length;i++){
$(reg[i]).mask("99?9999");
//$(reg[i]).css("color","#ff00ff");
}
});
$(".edit_tr").change(function(){
//window.alert($(this).attr('id'));
var rowID=$(this).attr('id');
//window.alert($("#dep" + rowID).val());
var sendReq;
var flt=$("#flt"+rowID).val();
var num=$("#num"+rowID).val();
var tpe=$("#tpe"+rowID +" option:selected").val();
var reg=$("#reg"+rowID).val();
var etd=$("#etd"+rowID).val();
var dla=$("#dla"+rowID).val();
var dep=$("#dep"+rowID).val();
var rem=$("#rem"+rowID).val();
var city=$("#city"+rowID +" option:selected").val();
var eta=$("#eta"+rowID).val();
var arr=$("#arr"+rowID).val();
//window.alert();
var dataStr="flt="+flt+"&"
+"num="+num+"&"
+"tpe="+tpe+"&"
+"reg="+reg+"&"
+"etd="+etd+"&"
+"dla="+dla+"&"
+"dep="+dep+"&"
+"rem="+rem+"&"
+"city="+city+"&"
+"eta="+eta+"&"
+"arr="+arr;
//window.alert(dataStr);
$("#dialog-confirm" ).dialog({
resizable: false,
height:140,
modal: true,
buttons: {
"Сохранить": function() {
$("#ico"+rowID).html("<img src='images/indic.gif' />");
$( this ).dialog( "close" );
sendReq=true;
},
"Отмена": function() {
$("#ico"+rowID).html("");
$( this ).dialog( "close" );
}
}
});
if (sendReq==true){
$.ajax({
type: "POST",
url: "updFlt.php",
data: dataStr,
cashe: false,
success: function(html){
$("#ico"+rowID).html("");
window.alert("It's ok");
}
});
}else
{
window.alert("false");
}
});
</script>
当用户点击我需要使用ajax发送数据的第一个按钮时,我有对话框弹出窗口有2个按钮取消...
$("#dialog-confirm" ).dialog({
resizable: false,
height:140,
modal: true,
buttons: {
"Сохранить": function() {
$("#ico"+rowID).html("<img src='images/indic.gif' />");
$( this ).dialog( "close" );
sendReq=true;
},
"Отмена": function() {
$("#ico"+rowID).html("");
$( this ).dialog( "close" );
}
}
});
之后我会检查并使用ajax发送到服务器
if (sendReq==true){
$.ajax({
type: "POST",
url: "updFlt.php",
data: dataStr,
cashe: false,
success: function(html){
$("#ico"+rowID).html("");
window.alert("It's ok");
}
});
}else
{
window.alert("false");
}
});
我得到的结果是window.alert("false");
- 这行代码在jQuery对话框弹出之前执行!!为什么会这样?当我运行我的网络应用程序并更改表格行标准警报首先弹出(模态表格)然后我到达confirm-dialog
$(“#dialog-confirm”)。dialog()弹出,虽然这行代码在标准警报呼叫之前!!!
答案 0 :(得分:1)
正在读取sendReq并以异步方式写入。这意味着代码立即转到if( sendReq == true )
,并在警报发生后分配值。容易解决?将$ .ajax移动到按钮处理程序中:
buttons: {
"Сохранить": function() {
$("#ico"+rowID).html("<img src='images/indic.gif' />");
$( this ).dialog( "close" );
$.ajax({
type: "POST",
url: "updFlt.php",
data: dataStr,
cashe: false,
success: function(html){
$("#ico"+rowID).html("");
window.alert("It's ok");
}
});
},
"Отмена": function() {
$("#ico"+rowID).html("");
$( this ).dialog( "close" );
}
}
答案 1 :(得分:1)
将代码更改为:
$("#dialog-confirm" ).dialog({
resizable: false,
height:140,
modal: true,
buttons: {
"Сохранить": function() {
$("#ico"+rowID).html("<img src='images/indic.gif' />");
$( this ).dialog( "close" );
$.ajax({
type: "POST",
url: "updFlt.php",
data: dataStr,
cashe: false,
success: function(html){
$("#ico"+rowID).html("");
window.alert("It's ok");
}
});
},
"Отмена": function() {
$("#ico"+rowID).html("");
$( this ).dialog( "close" );
}
}
});
答案 2 :(得分:0)
mybe你可以用这个
$("#dialog-confirm" ).dialog({
resizable: false,
height:140,
modal: true,
buttons: {
"Сохранить": function() {
$("#ico"+rowID).html("<img src='images/indic.gif' />");
var dlg = this;
call_ajax(function(){
$("#ico"+rowID).html("");
window.alert("It's ok");
$(dlg).dialog( "close" );
});
},
"Отмена": function() {
$("#ico"+rowID).html("");
$( this ).dialog( "close" );
}
}
});
AJAX
function call_ajax(call_back){
$.ajax({
type: "POST",
url: "updFlt.php",
data: dataStr,
cashe: false,
success: function(html){
call_back();
}
});
}