2015-01-09 79 views
1
<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> 

我需要把onclick,但只希望它能够被点击一次。我有100个问题。我只需要它来增加点击广播时的百分比。它应该只能点击一次,但这个,如果我再次点击它不断增加。我怎样才能让它只被点击一次?如何创建一个只能点击一次的点击处理程序?

因为我有10个问题,我不能使用true或false打开和关闭。

回答

0

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

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

这里是像http://api.jquery.com/one/

+0

我不希望使用jQuery的任何想法如何的例子吗?谢谢。 – 2015-01-09 19:05:36

0
var trigger = 0; 

function incr() { 

    if (trigger == 0) { 

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

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

     trigger = 1; 

    }; 

}; 
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> 
+0

但我也使用这个其他问题,我得到了10个问题使用相同的incr关闭组,但如果关闭1个问题其他不会功能以及。感谢帮助 – 2015-01-11 16:58:28

+0

我同意这就是为什么我给你的代码不需要禁用,但设置标志 – Devesh 2015-01-12 10:55:34

0

如果你不想使用jQuery,你可以很容易地创建你自己的一次函数。

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

这里有一个如何使用它http://codepen.io/zachwolf/pen/jEyZqY

+0

,但我也有其他问题,如果它成为假我的其他问题将无法再次点击它。 – 2015-01-09 19:29:21

+0

不,该变量对于该函数的执行是本地的。 – Xotic750 2015-01-09 20:11:04