根据单击的id禁用按钮

时间:2014-10-20 03:14:45

标签: php jquery

我需要一个能帮我解决这个问题的人。下面的代码与帖子和php代码配合得很好。

 //Getting the id of a buyer and loop through
    //sending a request to the seller
    $(document).ready(function(){

    $('.buyerRequest').click(function(){


    var id=$(this).attr('id').replace('id_','');

    $.post('SendingOffer.php',{id:id},function(data){
        if(data=="true"){
            $(this).html('<b>Offer Send</b>').css('background','#dce6f1');
            $(this).attr("disabled","disabled");

        }else if(data=="false"){
            alert('You have reached the maximum number you can send todays');
            }
        });

    });
    });

我已经测试了php代码,也就是说,如果返回的数据是真输出警告框并且正在工作。例如

if(data=="true"){
        alert(id);

}

但是,包含此代码

if(data=="true"){
        $(this).html('<b>Offer Send</b>').css('background','#dce6f1');
        $(this).attr("disabled","disabled");

}

并点击当前ID,我无法将其停用并更改其属性以提供发送。

我该如何处理这个问题

这是我的div代码

echo"<li id='td_request'><a id='id_".$fetch_num['order_id']."' class='buyerRequest' href='#".$fetch_num['order_id']."'>Send Offer</a></li>";

3 个答案:

答案 0 :(得分:0)

$(this)在$ .post中使用可能不是一个好主意。您最好使用对html对象的引用。

例如,

$(&#34; #mydiv&#34;)。html(&#39; 优惠发送&#39;)。css(&#39;背景&#39;,&#39;# dce6f1&#39);

$(this)通常引用上下文中的当前对象,在这种情况下是ajax请求,如果我没有弄错的话。例如......

$(".mydiv").each(function(){
//using $(this) here refers to the current instance of .mydiv; not the DOM or the body
});

所以,试试这个

$(document).ready(function(){

$('.buyerRequest').click(function(){


var id=$(this).attr('id').replace('id_','');

$.post('SendingOffer.php',{id:id},function(data){
    if(data=="true"){
        $("#**yourdivid**").html('<b>Offer Send</b>').css('background','#dce6f1');
        $("#**yourdivid**").attr("disabled","disabled");

    }else if(data=="false"){
        alert('You have reached the maximum number you can send todays');
        }
    });

});
});

工作代码

<a id='id_0' class='buyerRequest' href='#0'>Send Offer</a>
<div id='responseDIV'></div>

<script>
$(document).ready(function(){
    $('.buyerRequest').click(function(){
        var id=$(this).attr('id').replace('id_','');
        $.post('SendingOffer.php',{id:id},function(data){
            if(data=="true"){
                $("#responseDIV").html('<b>Offer Send</b>').css('background','#dce6f1');
                $("#id_0").removeAttr("href");

            }else if(data=="false"){
                alert('You have reached the maximum number you can send todays');
                }
            });

        });
});
</script>

答案 1 :(得分:0)

也许“这个”在这里含糊不清,试着改成:

var currentBtn = $(this);
var id = currentBtn.attr('id').replace('id_','');

$.post('SendingOffer.php',{id:id},function(data){
   if(data=="true"){
       currentBtn.html('<b>Offer Send</b>').css('background','#dce6f1');
       currentBtn.attr("disabled","disabled");

   }else if(data=="false"){
       alert('You have reached the maximum number you can send todays');
   }
});

如果禁用属性不起作用,您可以尝试:

currentBtn.prop("disabled", true);

它属于您的jQuery版本,参考:jQuery .attr("disabled", "disabled") not working in Chrome

希望这有帮助:)

答案 2 :(得分:0)

有一些问题。我假设this是一个按钮。我创建了一个div来应用样式。问题是this是由范围定义的。在帖子回调中,this指的是实际的帖子对象,而不是html元素。

<script>

$(document).ready(function() {

   $('.buyerRequest').click(function() {  

      var id=$(this).attr('id').replace('id_',''); 

      $.post('SendingOffer.php', {"id":id}, function(data) {
         console.log(data);
         if (data.length>0) {
            $('#my_div').html('<b>Offer Send</b>').css('background','#dce6f1');
            $('#id_my_button').prop("disabled",true);
         }
         else {
            alert('You have reached the maximum number you can send todays');
         }
      }); 
   });
});

</script>

<input type='button' class='buyerRequest' id='id_my_button' value='my_button'> 
<br/>
<div id='my_div'></div>