Javascript 如果用户不';t确认对话框
当用户确认时,会触发ajax,但如果用户取消确认对话框,则尽管没有触发ajax,但选择标记值仍会更改。我想要的东西,如果用户取消,然后选择标签应该保留它的前一个值。我有这个:Javascript 如果用户不';t确认对话框,javascript,jquery,html,Javascript,Jquery,Html,当用户确认时,会触发ajax,但如果用户取消确认对话框,则尽管没有触发ajax,但选择标记值仍会更改。我想要的东西,如果用户取消,然后选择标签应该保留它的前一个值。我有这个: <select name="ss" id="<?=$row['id'];?>" onchange="_changeStatus(this.value,'<?=$row['id'];?>');"> <option value='Paid'>Paid</option&
<select name="ss" id="<?=$row['id'];?>" onchange="_changeStatus(this.value,'<?=$row['id'];?>');">
<option value='Paid'>Paid</option>
<option value='Verified'>Verified</option>
<option value='Inprocess'>Inprocess</option>
<option value='Chargeback'>Chargeback</option>
</select>
应该是这样的:
<select defaultValue="Paid" name="ss" id="<?=$row['id'];?>" onchange="_changeStatus(this,'<?=$row['id'];?>');">
<option value='Paid'>Paid</option>
<option value='Verified'>Verified</option>
<option value='Inprocess'>Inprocess</option>
<option value='Chargeback'>Chargeback</option>
</select>
请注意,我让它尽可能的相似,所以你会得到一个概念。一般来说,在使用jQuery时内联绑定事件并不是一个好的做法,如果没有必要,还可以将javascript与jQuery混合使用。else$(“#id_of_select”).val(v)@ParthShah not REALYV变量中存储了新值创建一个新的全局变量以存储select的旧值。在ajax之后将其更新为新值,或者在确认上的
else
中将select重置为旧值。无需使用全局变量imo。。。最好将其保留为属性之前没有类似于value\u的属性
Oh抱歉。。。错过$
,已修复value\u before
是一个人工属性,用于保留以前的值。。。如果它还没有定义,因为没有以前的值,它默认为选择默认值。请注意,onchange
值也发生了变化。效果不错!但是select标记值变为空而不是以前的值您可能需要定义defaultValue<代码>
<select defaultValue="Paid" name="ss" id="<?=$row['id'];?>" onchange="_changeStatus(this,'<?=$row['id'];?>');">
<option value='Paid'>Paid</option>
<option value='Verified'>Verified</option>
<option value='Inprocess'>Inprocess</option>
<option value='Chargeback'>Chargeback</option>
</select>
function _changeStatus(vobj,i){
var v = vobj.value;
if($(vobj).attr('value_before')){
var vbefore = $(vobj).attr('value_before');
}else{
var vbefore = vobj.defaultValue;
}
if(confirm("Sure to Update")){
$.ajax({
type: 'post',
url: 'change-status.php',
data: {val:v,eid:i,actionid:1},
success: function (res){
if(res!="scr"){
alert("Unexpected Error, Page will be refreshed !");
window.location.reload();
}else{
$(vobj).attr('value_before',v);
}
}
});
}else{
$(vobj).val(vbefore);
}
}