Wpis z mikrobloga

Mirki kochane mam problem z #programowanie #jquery #javascript #php

Mam okno edycji rekordów w bazie oparte na JQuery UI i tam button zapisz zmiany. Problem polega na tym że usiłuję zablokować przycisk po kliknięciu żeby skrypt mógł się wykonać, ale przykładowo przy dodawaniu rekordów skrypt wykonuje się kilka razy jak kliknę raz szybko to jest OK, ale przy dłuższym przytrzymaniu buttona, albo szybkich kilku kliknięciach dojdę 2-50(!) rekordów, bo zdarzenie click zdaje się wywoływać losową ilość razy ... :(

Jakieś pomysły?

function after_lod_left() {
$(".add_records_btn").button({
icons: {
primary: "ui-icon-plusthick"
}
});
$(".open_edit_window, .add_records_btn").click(function () {
// po otworzeniu okna edycji
//
// alert($(this).attr('id'));
$("#dialog").text("Loading ...");
$(function () {
$("#dialog").dialog({
show: {
effect: "drop",
duration: 700
},
hide: {
effect: "drop",
duration: 700
},
resizable: false,
height: 600,
width: 870,
modal: true,
buttons: {
"Zapisz zmiany": function () {

$(":button:contains('Zapisz zmiany')").prop("disabled", true).addClass("ui-state-disabled");
$("#splash").css("display: inline");

$("#super_data_form").submit(function (event) {

// Stop form from submitting normally
event.preventDefault();

// Get some values from elements on the page:
var $form = $(this),
term = $form.serializeArray(),
url = $form.attr("action");

// Send the data using post
var posting = $.post(url, {data: term});

// Put the results in a div
posting.done(function (data) {

//var content = $().find("#left");
$("#save_console").empty().append(data);

$(function () {
$("#save_console").dialog({
resizable: false,
height: 600,
width: 700,
modal: true,
buttons: {
"Wszystko OK, koniec edycji": function () {
$(this).dialog("close");
$("#dialog").dialog("close");
$(":button:contains('Zapisz zmiany')").prop("disabled", false).removeClass("ui-state-disabled");
block_save = false;
},
"Kontynuuj edycję": function () {
$(this).dialog("close");
$(":button:contains('Zapisz zmiany')").prop("disabled", false).removeClass("ui-state-disabled");
block_save = false;
}
},
close: function () {
$(":button:contains('Zapisz zmiany')").prop("disabled", false).removeClass("ui-state-disabled");
block_save = false;
}
});
});

});
});

$("#super_data_form").submit();

},
"Anuluj": function () {
$(this).dialog("close");
}
}
});
});
$("#dialog").load("app/e.php?item=" + $(this).attr('id'), function (responseTxt, statusTxt, xhr) {
if (statusTxt == "success") {
// po otwarciu okna edycji

$(function () {
$("#tabs").tabs({
});
});
}

if (statusTxt == "error")
alert("Error: " + xhr.status + ": " + xhr.statusText);
});
});

}
  • 5