在自动刷新页面时使用jQuery设置单选按钮

时间:2012-02-08 01:15:26

标签: jquery button radio

我编写了以下jQuery,用于自动刷新包含轮询的页面(以便不断更新当前获胜选项)

function update() {
  var vote_radio = $('input:radio[name=vote_radio]:checked').val();
  $.ajax({
    type: 'POST',
    url: 'index.php',
    data: 'refresh=true&maintain_radio='+ vote_radio,
    timeout: 2000,
    success: function(data) {
      $("#current_body").html(data);
      $("#notice_div").html(''); 
      $("[name=vote_radio]").filter("[value="+vote_radio+"]").attr("checked","checked");
      window.setTimeout(update, 2000);
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
      $("#notice_div").html('Timeout contacting server..');
      window.setTimeout(update, 60000);
    }
});
};

$(document).ready(update);

在名为“vote_radio”的页面上有一个radiobutton投票,我还使用以下代码,向Ajax提供服务器的答案:

    $(function() {  
  $('.error').hide();
  $('.failure').hide();
  $('.success').hide();
  $(".vote_submit").click(function() {
        if (!$("input[@name='name']:checked").val()) {
            $('.error').show();
            return false;
        }
        var vote_radio = $('input:radio[name=vote_radio]:checked').val();;
        var dataString = 'vote_radio='+ vote_radio;
        $.ajax({
          type: "POST",
          url: "index.php",
          data: dataString,
          success: function() {
            $('.success').show();               
            $('.failure').hide();               
          },
          error: function() {
            $('.failure').show();               
            $('.success').hide();               
          }
        });
        return false;
  });
});

我遇到的问题是,如果用户在页面自动刷新时选择了他们的选项,它会将所选的单选选项放回到页面开始自动刷新时的状态,这令人沮丧。

此外,如果第二个脚本已告知.success类出现,则当​​第一个脚本自动刷新页面时,它会再次隐藏成功类。

1 个答案:

答案 0 :(得分:0)

为什么在启动AJAX调用之前将vote_radio元素还原为值?

只需在覆盖它之前阅读它,所以你保留当前值(即使它已经改变而未提交

所以只需将成功回调更改为

success: function(data) {
      var vote_radio = $('input:radio[name=vote_radio]:checked').val();
      $("#current_body").html(data);
      $("#notice_div").empty(); 
      $("[name=vote_radio]").filter("[value="+vote_radio+"]").attr("checked","checked");
      window.setTimeout(update, 2000);
    }

但是,一般来说,正确的方法是只更新需要更新的页面部分,而不是整个页面......这就是AJAX的全部内容。