如何创建单击处理程序,而不能只单击一次?

时间:2015-01-09 18:59:18

标签: javascript

<script type="text/javascript">
function incr() { 
var v1=document.getElementById('p1').value;
document.getElementById("p1").value= v1 + 1;
}
</script>

</head>

<body>
<form id="form_Warpper" action="data.php" method="post" onsubmit="return validateForm();">
    <progress value="0" max="100" id="p1"></progress>
                <p> 1. </p>
                <label> I am sexy. </label>
                <div class="allQuestion"><?php for($i=1; $i<=10; $i++){?><input type="radio" name="Dq[1]" value="<?=$i?>" onClick='incr();'> <?=$i?> <?php } ?></div>
                </div>
</body>

我需要点击,但只希望能够点击一次。我有100个问题。我只需要它来增加点击无线电时的百分比。它应该只能被点击一次但是这一次,如果我再次点击它会继续增加。如何才能让它只被点击一次?

因为我有10个问题我无法使用真或假来打开和关闭。

4 个答案:

答案 0 :(得分:0)

我想用jquery one()函数。例如,

$( "#foo" ).one( "click", function() {
  alert( "This will be displayed only once." );
});

以下是一个()http://api.jquery.com/one/

的相似内容

答案 1 :(得分:0)

var trigger = 0;

function incr() { 

    if (trigger == 0) { 

        var v1=document.getElementById('p1').value;

        document.getElementById("p1").value= v1 + 1;

        trigger = 1;

    };

};

答案 2 :(得分:0)

有几种方法可以做到,其中一种方法是在用户选择值后禁用单选按钮组,否则保留一个像这样的全局变量

                   <script>
                   var updated = false;
                    function incr() { 
                        if(updated == false){
                         var v1=document.getElementById('p1').value;
                         document.getElementById("p1").value= v1 + 1;
                         updated = true;
                         }
                      }
                   </script>

答案 3 :(得分:0)

如果您不想使用jQuery,您可以非常轻松地创建自己的一次功能。

function once(fn) {
    var called = false;
    return function () {
        !called && fn();
        called = true;
    }
}

以下是如何使用http://codepen.io/zachwolf/pen/jEyZqY

的示例