Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 仅当Ajax调用返回success时才更改单选按钮_Javascript_Html_Ajax_Radio Button_Dom Events - Fatal编程技术网

Javascript 仅当Ajax调用返回success时才更改单选按钮

Javascript 仅当Ajax调用返回success时才更改单选按钮,javascript,html,ajax,radio-button,dom-events,Javascript,Html,Ajax,Radio Button,Dom Events,在HTML表单中,我有一组单选按钮。在onchange()事件上,它通过Ajax调用推送其值 然后Ajax调用命中服务器,并根据调用发送的值进行处理。它返回一个字符串“success”或“failure” 如果返回字符串为“success”,则单选按钮应保持不变。如果出现“故障”,则应恢复到其最后位置 我做了什么?好的,我需要为复选框做类似的事情,在复选框的情况下很容易,我只是取消选中特定的复选框。我不知道如何记录单选按钮的最后位置 有任何帮助吗?尝试使用标志变量来保持先前选择的单选按钮 如果a

在HTML表单中,我有一组单选按钮。在
onchange()
事件上,它通过Ajax调用推送其值

然后Ajax调用命中服务器,并根据调用发送的值进行处理。它返回一个字符串
“success”
“failure”

如果返回字符串为
“success”
,则单选按钮应保持不变。如果出现
“故障”
,则应恢复到其最后位置

我做了什么?好的,我需要为复选框做类似的事情,在复选框的情况下很容易,我只是取消选中特定的复选框。我不知道如何记录单选按钮的最后位置


有任何帮助吗?

尝试使用标志变量来保持先前选择的单选按钮

如果ajax返回失败,则尝试使用flag变量检查上一个单选按钮

使用以下代码检查上一个单选按钮

$("input[name='radioButtonName'][value='valurFrom FlagVariable']").attr("checked", "checked");

您可以尝试以下方法:

var radioValue = $("input[type='radio']").attr('checked');
关于成功:

$("input[type='radio']").attr('checked', 'checked');
失败时:

$("input[type='radio']").removeAttr('checked');

无论何时,在检查单选按钮后,当您的上一个ajax请求返回成功数据时,请将选中单选按钮的值保存到一个变量中

当下一个请求返回失败数据时,只需从变量中获取值并选中相应的单选按钮

使用AJAX请求更新代码

$(function(){

    var lastInput = 'r1';

    $('input').change(function(){

        var rdio = $(this);

        $.ajax({
          url: 'script.php',
          type: 'POST',
          dataType: 'json',
          'success' : function(response){
            if(response.status == 'success'){
                lastInput = rdio.val();
            }
            else{
                $('input[name="radio_group"][value="'+ lastInput +'"]').prop('checked', true);                
            }
          },
        });
    });
});
伪代码

$(function(){

    var lastInput = 'r1';

    $('input').change(function(){

        var rdio = $(this);

        switch(rdio.val()){
            case 'r1':
                lastInput = rdio.val();
                alert("Success");
                break;

            case 'r2':
                $('input[name="radio_group"][value="'+ lastInput +'"]').prop('checked', true);
                alert("Failure");
                break;

            case 'r3':
                lastInput = rdio.val();
                alert("Success");
                break;              
        }
    });
});
出于测试目的,我在没有Ajax请求的情况下进行了测试,并使用Switch/Case语句对其进行了模拟,其中第二个条件显示了失败时的行为

对我来说效果很好

$(“输入:radio[name='profile'])。单击(函数(){

警报($(this.val())


}))

请发布您的代码目前还没有代码。我需要了解这一点。“我做了什么?”-好问题,你做了什么?可能提供一些代码?发布代码会有所帮助,因为有多种方法可以做到这一点。旧的单选按钮值是否存储在数据库中?我这样问是因为:如果是,那么您不必使用flag变量或类似的东西在前端存储旧值。您的ajax调用可以返回旧值和“失败”响应。我已经更新了上面的代码,并包含了一个虚拟ajax请求,但概念应该很清楚:)