禁用json响应中的按钮

时间:2015-12-30 03:44:55

标签: javascript jquery twitter-bootstrap-3

Codepen在这里:http://codepen.io/bwolfsohn/pen/jWVZwX

尝试在提交时通过jquery禁用按钮。

我正在模拟ajax响应。

该按钮未被禁用,但按钮上的值更改为"已禁用"。

我试过了:

($d).button('disable');
($d).prop( "disabled", true );

我哪里错了?

HTML:

<form class="form-inline bidding" id="rbconfirm" name="IamBidding" action="#">
<input id="arBidAmount_7101" type="text"  name="aBidAmount_7101" value="450.00">  
<input id="rbbutton" class="btn btn-success" type="submit" value="Bid Now">

的jquery / JS

$(function () {

var obj2 = {
"arBidAmount_7101" : {
"value" : "500.00"
},
"rbbutton" : {
"disable" : "disabled"
}
};
$("#rbconfirm").submit(function(e){
 $.each(obj2, function(i, item) {
        var d = i;
        var $d = $('#' + i);
        if ($d.length !== 0) {
   $.each(item,function(i,item) {
      if ($d.is(':input')) {
        ($d).val(item);
       }
      else if (i=='disable') {
        ($d).prop( "disabled", true );
       }
      else if (i=='value') {
      ($d)[0].innerHTML = item;
      }
    else{
      if (typeof console == "object") {
        console.log('notinput '+ i + d);
       }
      }
    });
        } else {
        if (typeof console == "object") {
              console.log(i + 'notfound');
          }
        }
      });
     e.preventDefault();
     });
  });

这是更正后的javascript ... 感谢@ pranin-shakya问题的关键..

changing this line:
if ($d.is(':input')) {

to this line:
if (($d.is(':input')) && (!$d.is(':submit')))

排除提交按钮被评估为输入。

$(function () {

var obj2 = {
"arBidAmount_7101" : {
"value" : "500.00"
},
"rbbutton" : {
"disable" : "true"
}
};
$("#rbconfirm").submit(function(e){
  console.log(obj2);
 $.each(obj2, function(i, item) {
        var d = i;
        var $d = $('#' + i);
        if ($d.length !== 0) {
   $.each(item,function(i,item) {
      if (($d.is(':input')) && (!$d.is(':submit')))
      {
        ($d).val(item);
       }
      else if (i=='disable') {
        $($d).prop( "disabled", true );
       }
      else if (i=='value') {
      ($d)[0].innerHTML = item;
      }
    else{
      if (typeof console == "object") {
        console.log('notinput '+ i + d);
       }
      }
    });
        } else {
        if (typeof console == "object") {
              console.log(i + 'notfound');
          }
        }
      });
     e.preventDefault();
     });
  });

4 个答案:

答案 0 :(得分:0)

基本概念

你可以做到这一点非常基本:

$("some sort of selector").prop("disabled", true | false);

如果您使用的是jQuery UI样式按钮,则应通过以下方式启用/禁用该按钮:

$("some sort of selector").button("enable" | "disable");

了解详情here

在代码中实现它:

($d).button('disable');

您可以这样做:

($d).prop("disabled", true);

($d).button('disable');

这是一个例子

这是stackoverflow的一个很好的代码示例!:

$('.rbutton').on('click',function() {
    $(this).prop("disabled",true);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<button class="rbutton">Click me</button>

答案 1 :(得分:0)

您可以在检查if/else

后使用i语句is(:input)
 if ($d.is(':input')) {
    $($d).val(item);

   if (i=='disable') {
    console.log(d);
    console.log($d);
    // ($d).button('disable');
    $d.prop( "disabled", true );
   }
   if (i=='value') {
   //console.log($d);
   // console.log( ($d)[0].innerHTML );
  $($d)[0].innerHTML = item;
  // console.log( ($d)[0].innerHTML );
  }
}else{
  if (typeof console == "object") {
    console.log('notinput '+ i + d);
  }
}

Working Demo

  
    

注意:您需要解决if / else语句才能满足您的需求

  

答案 2 :(得分:0)

你可以在jquery中使用addClass。()函数(如果你使用bootstrap)

$(&#34;#yourButton&#34)addClass(&#34;禁用&#34);

答案 3 :(得分:0)

使用:

  if ($d.is(':input')) {
    ($d).val(item);
     if (i=='disable') {
    $($d).attr( "disabled", "disabled" );
   }
   }

由于您的逻辑与行

相矛盾,您的代码无法正常运行

- if($ d.is(&#39;:input&#39;)){ -

由于提交按钮也是INPUT类型,因此它将返回true,即包含的else语句

- ($ d).prop(&#34;禁用&#34;,true) - 永远不会执行。