如果用户未确认对话框,请保留选择标签的值

时间:2018-08-23 09:28:42

标签: javascript jquery html

当用户确认时会触发ajax,但是如果用户取消了确认对话框,尽管没有触发ajax,选择标记值仍然会更改。我想要类似的东西,如果用户取消了,那么select标签应该保留它的先前值。我有这个:

<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>

脚本:

function _changeStatus(v,i){
       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();
              }

            }
          });
     }
    }

1 个答案:

答案 0 :(得分:0)

应该是这样的:

<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);
    }
}

请注意,我将其保留得尽可能相似,因此您将获得一个概念。通常,在使用jQuery时内联绑定事件不是很好的做法,并且在不必要的情况下将JavaScript与jQuery混合使用。