我创建了一种带有动态创建复选框的表单。我使用了一个 j 查询脚本来检查天气用户是否选中了至少一个复选框。如果没有,那么它会发出错误消息警报。
HTML 代码
print "<form action=\"dpt_multi_delete.php\" method=\"POST\" name=\"searchform\" >\n";
print "<td><input type=\"checkbox\" name=\"dptid$i\" value=\"$row[dpt_id]\"></td>\n";
print "<input type=\"submit\" name=\"submit\" value=\"DELETE SELECTED\" onclick=\"Validate()\"/>\n";
JavaScript 是:
function Validate() {
var form = document.forms[0]
var counter=0;
for (i = 0; i < form.elements.length ; i++) {
if (form.elements[i].type == "checkbox"){
if(form.elements[i].checked == true){
counter++
}
}
}
if (counter == 0){
alert("You have not selected an item to delete");
return false;
}
else{
alert("Are you sure you want to delete "+counter+" records");
}
}
问题一:
我面临的问题是,如果用户未选择任何复选框,那么他将收到错误警报。单击确定或取消后,它将重定向到 dpt_multi_delete.php 页面。即使我在警报后使用了“return false”,但它不起作用。
问题2:
如果用户选择了多个复选框,那么我将发出警告,然后如果用户单击“确定”,那么它将删除该记录。但取消该警报消息后就全部删除记录了。
对此的称呼是什么? ?我哪里错了?
如果您要从事件处理函数返回 false,那么您需要从事件处理程序它本身,而不仅仅是它调用的另一个函数。
您的 onclick 函数没有 return 语句。它调用Validate
然后对函数返回的值不执行任何操作。
onclick="return Validate();"
约定为构造函数保留以大写字母开头的变量名称。调用你的函数validate
, not Validate
.
通常,在提交表单时处理此类测试比单击特定提交按钮时处理此类测试更好。
现代 JavaScript 不使用onclick
/onsubmit
/etc 属性。我们用addEventListener https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener反而。
function validate(event) {
// Your logic
if (someCondition) {
// Stop
event.preventDefault();
}
}
document.querySelector("form").addEventListener('submit', validate);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)