我有一个表单,用户可以在其中给出1到5的评级,这是通过无线电盒完成的。但是如果没有检查,用户可以多次点击同一个按钮,如何防止这种情况?左边的代码是简单编写的
echo "<input type='hidden' name='risk' />
<td>1<input type='radio' name='question[]' id=1 value=1 onclick='calculate_score(".$number.",this.value)'/></td>
<td>2<input type='radio' name='question[]' id=2 value=2 onclick='calculate_score(".$number.",this.value)'/></td>
<td>3<input type='radio' name='question[]' id=3 value=3 onclick='calculate_score(".$number.",this.value)'/></td>
<td>4<input type='radio' name='question[]' id=4 value=4 onclick='calculate_score(".$number.",this.value)'/></td>
<td>5<input type='radio' name='question[]' id=5 value=5 onclick='calculate_score(".$number.",this.value)'/></td>
</table></form>";
谁能告诉我如何处理这个问题? 请注意,上面的代码只是从代码中删除它,它确实有效。它纯粹是功能性的。正如你所看到的那样,一旦点击这个单选框就会转到javascript函数我是否在那里建立了支票,我将如何进行类似的操作?
答案 0 :(得分:1)
您可以禁用刚刚选中的按钮,启用所有其他按钮,一旦用户更改其值,将启用之前的按钮,并且将禁用新按钮以防止用户进一步点击该按钮
答案 1 :(得分:1)
您需要编写calculate_score()
函数,以便根据用户选择的状态计算,而不是根据检查或取消选中按钮的操作。防止用户改变他的选择(可能在特殊游戏或测试中除外)将是糟糕的可用性和糟糕的功能。
答案 2 :(得分:0)
我建议你使用一个好的框架(比如jQuery)并将你的javascript逻辑放到<script>
标签中,但如果你这样做,你必须有自己的理由。要禁用单击的输入元素,请尝试以下代码段:
// i am assuming (\") will escape the quote (") character to echo
onclick='calculate_score(".$number.",this.value); this.onclick=\"\";'