У меня небольшая проблема, я пытаюсь создать встроенную систему редактирования с помощью jquery.Поэтому, когда пользователь нажимает на поле таблицы, innerhtml изменится на поле ввода с, конечно же, содержимым поля таблицы.По умолчанию это поле ввода сохраняется в mysql db, и innerhtml возвращается к новому содержимому.Я хочу, чтобы пользователь редактировал один и тот же текст несколько раз.Если я использую .live('click',function(){});
Каждый раз, когда пользователь нажимает на поле таблицы, ввод добавляется, поэтому я заменяю ввод на вход со значением последнего ввода.Очень досадно, я решил это с помощью функции .one
, но теперь пользователь может редактировать каждое поле таблицы только один раз!Есть ли способ отключить прямое событие до завершения вызова ajax?
Jquery
$(document).ready(function(){
var id = 0;
$('table.editable td').one('click', function(event) {
var content = $(this).html();
id = $(this).parent().find('.id').val();
var class = $(this).attr('class');
$(this).html('<input type="text" id="editablefield" name="'+class+'" value="'+content+'"/>');
$(this).unbind(event);
});
$('#editablefield').live('blur', function() {
var value = $(this).val();
var name = $(this).attr('name');
$.ajax({
type: "POST",
url: "modules/Events/ajax/saveField.php",
data: "id="+id+"&val="+value+"&type="+name,
success: function(data) {
var data = data;
alert(data);
},
error: function(request, status, error) {
alert(request.responseText);
}
});
$(this).parent().html(value);
});
});
FRONTEND
<?php
$query = "SELECT * FROM mod_events";
$result = mysql_query($query) or die(mysql_error());
echo "<table class='editable'>";
echo "<tr>";
echo "<th></th>";
echo "<th>Event</th>";
echo "<th></th>";
echo "<th></th>";
echo "<th></th>";
echo "<th>Capacity</th>";
echo "</tr>";
while($row = mysql_fetch_assoc($result)) {
echo ("<tr>");
echo ("<td>");
echo ("<input type='hidden' value='".$row['event_id']."' class='id'>");
echo ("</td>");
echo ("<td colspan='4' class='event_name'>");
echo ($row['event_name']);
echo ("</td>");
echo ("<td class='event_capacity'>");
echo ($row['event_capacity']);
echo ("</td>");
echo ("</tr>");
}
echo "</table>";
?>
И сценарий AJAX
<?php
require_once('../../../../config.php');
require_once("../../../../inc/dbconnect.php");
$id = mysql_real_escape_string($_POST['id']);
$value = mysql_real_escape_string($_POST['val']);
$field = mysql_real_escape_string($_POST['type']);
$query = "UPDATE mod_events SET ".$field." = '".$value."' WHERE event_id = ".$id;
echo mysql_query($query);
?>
Надеюсь, вы, ребята, можете мне помочь!