PHP 在输入内单击一次
php onclick once inside input
<progress value="0" max="100" id="p1"></progress>
<div class="allQuestion"><?php for($i=1; $i<=10; $i++){?><input type="radio" name="Dq[1]" value="<?=$i?>" onClick='incr();'> <?=$i?> <?php } ?></div>
.js
<script type="text/javascript">
function incr() {
var v1=document.getElementById('p1').value;
document.getElementById("p1").value= v1 + 1;
}
</script>
我的目的是让1-10点之间的问题只能点击一次,但是输入是由PHP生成的,所以如果我把onclick放在输入里面,我点击的每个收音机都会增加进度条,我只需要收音机只点击一次,进度条保持不变, 让每个问题是1%一旦点击它只增加1%,当重新点击它仍然是1%。
或者我也不想使用jQuery。
我不是 100% 确定你在这里问的是什么(从反对票来看,其他人似乎也是)。
在StackOverflow上提问的一些一般提示:
- 你的问题应该很清楚(很难真正判断你在这里问什么)
- 理想情况下,您的代码应该以可读的方式呈现(您提供的 PHP/HTML 代码都在一行上,考虑到问题是关于 JavaScript 功能的,而我们无法访问您的其余 PHP 代码,PHP 代码在问题方面毫无用处,并且使回答您的问题更加努力)
- JSFiddles 在提出这样的前端问题时通常很有帮助(这意味着复制问题所浪费的时间更少)
时尝试遵循上述建议,该列表绝不是包罗万象的,您还应该仔细阅读此处提问的指南。
现在进入您的实际问题。
我猜您希望您的代码按如下方式运行:
- 一个用户只能选择一个选项一次
- 选择选项后,应将其添加到段落的数字内容中
假设我上面是正确的(如果没有,请告诉我),以下代码应该适合您:
.HTML:
<p id="answerswerResult">1</p>
<div class="allQuestion" id="allQuestion">
<input type="radio" name="questionAnswer" value="1" /> 1<br />
<input type="radio" name="questionAnswer" value="2" /> 2<br />
<input type="radio" name="questionAnswer" value="3" /> 3<br />
<input type="radio" name="questionAnswer" value="4" /> 4<br />
<input type="radio" name="questionAnswer" value="5" /> 5<br />
<input type="radio" name="questionAnswer" value="6" /> 6<br />
<input type="radio" name="questionAnswer" value="7" /> 7<br />
<input type="radio" name="questionAnswer" value="8" /> 8<br />
<input type="radio" name="questionAnswer" value="9" /> 9<br />
<input type="radio" name="questionAnswer" value="10" /> 10<br />
</div>
JavaScript:
// the paragraph that contains information about your currently selected answer
var answerSummary = document.getElementById('answerResult');
// the container of the radio buttons
var answersContainer = document.getElementById("allQuestion");
// the radio buttons
var answerOptions = answersContainer.getElementsByTagName("input");
for(var i = 0; i < answerOptions.length; i++) {
answerOptions[i].addEventListener("click", function(event) {
// change the paragraph to show the currently selected value
answerSummary.innerHTML = answerSummary.innerHTML + " " + this.value;
// disable all radio buttons once an options has been selected
for(var i = 0; i < answerOptions.length; i++) {
answerOptions[i].disabled = true;
}
});
}
以及指向此代码的链接:http://jsfiddle.net/44mvrftu/4/
我已经相当显着地重构了您的代码,以尝试使其更具可读性,可维护性和易于理解,我已经更改了一些内容:
- 更好的变量名称
- (v1 永远不应该是变量名称) HTML
- 中没有"onclick",你永远不应该真正这样做,因为这意味着你混合了HTML和JavaScript(表示和功能),这使得可维护性更加困难,并且在某些方面可以说性能较低。如果您发现我添加 onclick 事件处理程序的方式令人困惑,请告诉我,我会尝试帮助您理解,或者您可以修改上面的代码以在 HTML 中使用"onclick"。 我
- 删除了PHP(这对于我创建工作演示是必要的)
- 我使用了纯JavaScript,这将更容易,更干净地在jQuery中实现,并且还可以确保它在较旧的浏览器中工作(上面的代码只能在现代浏览器中可靠地工作),但是您没有说jQuery,所以我假设您没有使用它。
我希望我说得对吗?如果您有任何问题,请告诉我。
问题不清楚,如果你说你只想使用 jQuery .one() 点击一次,请在此处查看详细信息
好吧,
我不知道你想要什么?你可以同时使用PHP和Javascript,但这取决于你想做什么。
jQuery 解决方案:
$("input").one("click", function () {
alert($("input[type=checkbox]").val());
});
相关文章:
- 单击仅在第二次单击后有效
- 删除确认对话框在第一次单击时不起作用
- 在单击事件中,第一次单击时激发代码一次,其余代码在所有单击时运行
- 一次点击,两次'单击'事件已启动
- 单击一次以静音,另一次单击可取消静音
- 一次单击一下即可在句子中显示大字符串
- 如何在函数中添加一次单击事件
- 让窗口在一次单击触发两个页面重定向后保持焦点
- 我的 jQuery 滑块运行良好,但存在错误,它有时不会在下次或上一次单击时显示图像
- 元素上的多次单击绑定仅在挖空.js中执行一次
- 向同一按钮添加两次单击事件只能工作一次
- 单击时将html存储到变量中,从DOM中删除,然后在另一次单击时将其放回
- 向下滑动一次单击标签不会滑动
- Jquery获取最近一次单击的属性ID
- jquery单击事件在一次单击中执行多次
- JQuery通过另一次单击的代码单击
- 对于动态创建的元素,只绑定一次单击事件
- JQuery三按钮单击事件执行一次单击
- 每隔一次单击Internet Explorer中的链接都不起作用
- 事件(单击)如何通过另一次单击一次又一次地触发