我正在尝试为任务表单编写代码,以显示任务及其状态。这是我的表格。
如果我点击状态内容,系统会显示一个选择菜单,其中包含三个选项Completed
,In Progress
和Waiting for client confirmation
。如果我选择一个选项并按Enter键,它将在数据库中更新。如果状态更新为completed
,则不会在click事件上显示选择框。我的问题是,如果我更新状态以完成,然后单击相同的状态,出现选择菜单。但如果我修改并刷新页面,它工作正常。我需要它才能正确刷新页面。
这是我的php代码
<?php
if($fetchstatus == 'Completed'){
echo 'Completed';
}
else{?>
<span id="status"><?php echo $fetchstatus; ?></span>
<select id="<?php echo $fetchtaskid; ?>" style="width:110px;">
<option value="In progress">In progress</option>
<option value="Completed">Completed</option>
<option value="Waiting for client confirmation">Waiting for client confirmation</option>
</select>
<?php
}
?>
这是我的ajax脚本
$(document).ready(function(){
var eventFlag=false;
var originalText='';
$('.updatetask tr td span#status').click(function(e){
e.stopImmediatePropagation();
$(this).siblings().show().focus();
$(this).hide();
eventFlag=false;
originalText=$(this).siblings().val();
});
$('.updatetask tr td select').blur(function(e){
if(!eventFlag && validate($(this))) doAjax($(this));
else
{
$(this).siblings().show();
$(this).hide();
}
});
$('.updatetask tr td select').keypress(function(e){
e.stopImmediatePropagation();
var code = (e.keyCode ? e.keyCode : e.which);
if(code==13)
{
if(validate($(this)))
{
doAjax($(this));
eventFlag=true;
}
else
{
$(this).siblings().show();
$(this).hide();
}
}
});
function validate(input)
{
console.log(input.val()+" "+originalText);
if(input.val()!='' && input.val()!=originalText)
return true
else return false;
}
function doAjax(input)
{
var formData="proId="+input.attr('id')+"&text="+input.val();
$.ajax({
type: "POST",
url: "update_taskstatus.php",
data: formData,
success: function(data){
if(data==1)
{
input.siblings().text(input.val()).show();
input.hide();
if(input.val()=='completed')
{
input.siblings().unbind('click');
}
}
else
{
input.siblings().show();
input.hide();
alert("something Wrong !");
}
},
error:function (xhr, ajaxOptions, thrownError){
alert("Error:"+xhr.status+" "+thrownError);
}
});
}
});
我该如何纠正?
答案 0 :(得分:1)
因为你改变了我昨天给你的代码,所以我有点困惑,不知道我当前的代码是否会起作用,但是从我的猜测中尝试这个让我知道结果
if(data==1)
{
input.siblings().text(input.val()).show();
input.hide();
if(input.val()=='Completed')
{
input.siblings().unbind('click');
}
}
更改do ajax函数,只改变第一个if块,希望它足够清楚。