私はフランス語なので、いくつかの翻訳ミスを許してください...
Jquery と Ajax 呼び出しを使用したコードがありますが、次の問題がわかりません。
最初の行があるテーブルがあります。行の最後に、有効と削除の 2 つのオプションがあります。有効なアイコンをクリックすると、読み込みアイコンが表示され、新しい行が表示され、テーブルに追加され、読み込みアイコンが消え、削除アイコンが表示されます。
削除アイコンをクリックすると、行が削除されます。
そして、私の問題...
最初は、アイコンに "onclick=valid()" と "onclick="delete()" を直接実装していましたが、今では、よりきれいに :
$('#valid'+i).click(function(){
valid(i);
});
$('#delete'+i).click(function(){
delete(i);
});
そして問題が表示されます:たとえば、削除アイコンの3行目をクリックすると、4行目に表示されるのは読み込み中です...
コードがあります
PHP/HTML
<?php
include_once 'functions_sandbox.php';
?>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.0.min.js" type="text/javascript"></script>
</head>
<body>
<script type="text/javascript">
//Fonction qui charge les datepicker et les différentes options sur les champs
function reload_jquery(){
$('input[type=text][id*=tags]').each(function() {
i = $(this).attr('num');
$(this).css('border','thin blue solid');
$('#valid'+i).click(function(){
valid_temps(i);
});
$('#delete'+i).click(function(){
delete_temps(i);
});
});
}
function valid_temps(i){
$('#loading'+i).show();
$('#valid'+i).hide();
var variables = 'mode=saisie_temps&j='+$('#j').val();
$.ajax(
{
// Define AJAX properties.
type: "POST",
url: "/dgi/ajax_sandbox.php",
data : variables,
dataType: "html",
timeout: 6000,
// Define the succss method.
success: function(data)
{
$('#data_retour').append(data);
$('#loading'+i).hide();
$('#delete'+i).show();
$('#j').val(parseInt($('#j').val())+1);
reload_jquery();
}
}
);
}
function delete_temps(i){
$('#loading'+i).show();
$('#delete'+i).hide();
$( "#confirm").dialog({
resizable: false,
height:160,
width: 350,
modal: true,
buttons: {
"Oui": function() {
supp_temps(i);
$(this).dialog( "close" );
},
"Non": function() {
$('#loading'+i).hide();
$('#delete'+i).show();
$(this).dialog( "close" );
}
}
});
}
function supp_temps(i){
$('#ligne'+i).hide('slow');
}
$(function(){
reload_jquery();
});
</script>
<table id="data_retour" class="module">
<?php echo ligne_saisie_sandbox(0); ?>
</table>
<div style="display:none" id="confirm" title="Confirmation">Voulez-vous vraiment supprimer ce temps ?</div>
<label>Indice J : </label>
<input type="text" value="1" id="j" name="j" />
</body>
</html>
「functions_sandbox.php」の「ligne_saisie_sandbox」関数
function ligne_saisie_sandbox($j){
$retour = '
<tr id="ligne'.$j.'">
<td class="cellule _light">
<label>Attraction'.$j.' : </label>
<input type="text" id="tags'.$j.'" num="'.$j.'" />
<img src="/dgi/img/b_save.png" alt="Valid" title="Valider votre temps" title="Valider le temps" id="valid'.$j.'" style="margin-top:5px;float:right">
<img src="/dgi/img/b_empty.png" alt="Supprimer" title="Supprimer votre temps" title="Supprimer le temps" id="delete'.$j.'" style="margin-top:5px;float:right;display:none">
<img src="/dgi/img/ajax_clock_small.gif" alt="Load" id="loading'.$j.'" style="margin-top:5px;float:right;display:none;" />
</td>
</tr>';
return $retour;
}
「ajax_sandbox.php」のAjax
include_once 'functions_sandbox.php';
switch ($_POST['mode'])
{
case "saisie_temps":
$j = $_POST['j'];
$retour = ligne_saisie_sandbox($j);
echo $retour;
break;
}
問題を説明するための小さな画像