按钮 - 单击其中一个后如何停止工作

时间:2017-01-05 14:15:58

标签: javascript jquery html

在我的代码中,我有number = 0 element = 1 since `number = 0`, the value of the `element` i.e, `1` is returned. two,我想确认如果用户点击其中任何一个,它将执行buttons(它已经有效),但如果它再次点击,它将不会做任何事情

我的HTML代码:

function

我的功能代码(.js):

<html>
<head>
<meta charset="UTF-8">

<title>Demo</title>
<script src="jquery-3.1.1.js"></script>
<script src="JS.js"></script>
<!--script src="JS2.js"></script-->
</head>

<body>
  <p><input type="button" name="click" value="Button I" id="1" onclick="myFunction();"/></p>
<p><input type="button" name="click" value="Button II" id="2" onclick="myFunction2();"/></p>

</body>
</html>

谢谢你。

2 个答案:

答案 0 :(得分:2)

对于jquery 1.6及以上版本,请使用:

$("input[type='button']").prop("disable", true)

对于小于1.6的版本,请使用

$("input[type='button']").attr('disabled','disabled');

我个人会在你的ajax调用之前把它放在你的函数的顶部。

这样,如果出现错误,您可以在错误处理程序中反转属性。

  

修改

经过一些测试,我看到了你的意思,它不起作用。所以这里有一些替代品,包括原版:

$("input")[0].disabled = true;
$("input")[1].disabled = true;

假设您只有两个输入按钮而没有文本框。

另一种方式:

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

再次假设您的文档中没有其他输入。

最后,原始答案,稍有改动:

$("input[type='button']").prop("disabled", true);

注意“禁用”已更改为“已禁用”。

我使用Microsoft Edge尝试了所有这些并且每个都可以使用。我建议你从第一个开始,然后继续努力,直到找到适合你的解决方案。

您的代码看起来像

function myFunction(xx, xx, numberOrigin){
    numberOrigin +=1;

    $("input[type='button']").prop("disabled", true); <-- or one of the other choices here

    $.ajax({
    type: 'POST',
    dataType: "json",
    contentType: "application/json",
    url: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
    data: JSON.stringify({
            "xxxxxxxxxxx":xxxxxxx,
            "xxxxxxxxxxxx":xxxxxxxxx,
            "xxxxxxxxxxxx":"xxxxxxx"
    }),
        success:function(output) {
            console.log(output);

            otherFunction(xxxxxxxxxxxxxxxx, numberOrigin);
       },
        error:function(output) {

       }
    });
}

干杯,祝你好运

答案 1 :(得分:1)

由于您使用的是JQuery,请考虑使用.one()函数。 http://api.jquery.com/one/

您可以像这样使用它。删除onclick =&#34; myFunction()&#34;来自每个输入元素。然后在.js文件中使用JQuery:

/**** add this here ****/
$(function(){
    /* EDIT: I noticed you're wanting to call a different fcn
       depending on which button is clicked. With my solution you 
       could handle this like so: */
    $('input').one('click', function(){
        if($(this).attr('id') !== '2') myFunction();
        else myFunction2();
    });
});

function myFunction(xx, xx, numberOrigin){
    numberOrigin +=1;

    $.ajax({
      type: 'POST',
      dataType: "json",
      contentType: "application/json",
      url: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
      data: JSON.stringify({
        "xxxxxxxxxxx":xxxxxxx,
        "xxxxxxxxxxxx":xxxxxxxxx,
        "xxxxxxxxxxxx":"xxxxxxx"
    }),
    success:function(output) {
        console.log(output);
        otherFunction(xxxxxxxxxxxxxxxx, numberOrigin);
    },
    error:function(output) {
       /**** also add here NOTE: in myFunction2() 
             you'll want to call myFunction2 here ****/
      $('input').one('click', myFunction);
    }
    });
}

one()函数在匹配选择器的每个元素上触发一次后将取消绑定。

编辑:如果您的AJAX请求恰好返回错误,您可能需要将点击处理程序重新附加到按钮。在这种情况下,将上面的代码添加到错误回调中,以便用户可以再次单击,如果这是您想要的行为。