Php 仅选择Javascript中的一些复选框
我已经有了这个代码:Php 仅选择Javascript中的一些复选框,php,javascript,html,forms,Php,Javascript,Html,Forms,我已经有了这个代码: function chkcontrol(j) { var total=0; for(var i=0; i < document.contactForm.qualities.length; i++) { if(document.contactForm.qualities[i].checked) { total =total +1;} if(total > 2) {
function chkcontrol(j) {
var total=0;
for(var i=0; i < document.contactForm.qualities.length; i++) {
if(document.contactForm.qualities[i].checked) {
total =total +1;}
if(total > 2) {
alert("Please Select only 2")
document.contactForm.qualities[j].checked = false ;
return false;
}
}
}
}
一个选项是使用此选项:
function chkcontrol(j) {
var total = 0;
var chk = document.getElementById("newform").querySelectorAll('input[name="qualities[]"]');
for (var i = 0; i < chk.length; i++) {
var cur = chk[i];
if (cur.checked) {
total++;
if (total > 2) {
alert("Too many checked");
chk[j].checked = false;
break;
}
}
}
}
功能chkcontrol(j){
var合计=0;
var chk=document.getElementById(“newform”).queryselectoral('input[name=“qualitys[]”)');
对于(变量i=0;i2){
警惕(“检查过多”);
chk[j].选中=假;
打破
}
}
}
}
演示:
另一种方法是使用如下内容,以更好地组织所有内容并保持Javascript不引人注目:
window.onload = function () {
var chk = document.getElementById("newform").querySelectorAll('input[name="qualities[]"]');
for (var i = 0; i < chk.length; i++) {
var cur = chk[i];
addEvent(cur, "click", clickHandler);
}
};
function clickHandler(e) {
var total = 0;
var chk = document.getElementById("newform").querySelectorAll('input[name="qualities[]"]');
for (var i = 0; i < chk.length; i++) {
var cur = chk[i];
if (cur.checked) {
total++;
if (total > 2) {
alert("Too many checked");
preventDefault(e);
break;
}
}
}
}
function preventDefault(e) {
e = e || window.event;
if (e.preventDefault) {
e.preventDefault();
} else {
e.returnValue = false;
}
}
function addEvent(element, eventName, callback) {
if (element.addEventListener) {
element.addEventListener(eventName, callback, false);
} else if (element.attachEvent) {
element.attachEvent("on" + eventName, callback);
} else {
element["on" + eventName] = callback;
}
}
window.onload=函数(){
var chk=document.getElementById(“newform”).queryselectoral('input[name=“qualitys[]”)');
对于(变量i=0;i2){
警惕(“检查过多”);
防止违约(e);
打破
}
}
}
}
功能默认值(e){
e=e | | window.event;
如果(如默认){
e、 预防默认值();
}否则{
e、 returnValue=false;
}
}
函数addEvent(元素、事件名、回调){
if(element.addEventListener){
元素addEventListener(eventName,回调,false);
}else if(元素附件){
元素attachEvent(“on”+eventName,回调);
}否则{
元素[“on”+eventName]=回调;
}
}
演示:
(其中HTML没有为复选框定义任何onclick
)
我更喜欢这种设置,因为您不需要硬编码复选框的索引,可以防止事件
(而不是手动取消复选框的选中,我认为这样做很好)
参考:
document.contactForm['qualities[]]]
选择带有name=“qualities[]”
的表单元素列表,您需要方括号表示法来使用对象键和无效标识符
for(var i=0; i < document.contactForm["qualities[]"].length; i++){
for(var i=0;i
这允许将任何有效字符串用作键,而标识符语法将您限制为字母、数字、
和$
您可以将HTML添加到问题中吗?Is name=“qualities[]”您试图在HTML中添加的内容?否则,我在js中的任何地方都看不到name=。您的HTML无效;表
的唯一有效子元素是tbody
、thead
、tfoot
或tr
。任何其他内容都必须包装在td
元素中,以及这些元素中,
是tr
的唯一有效子元素。您需要添加结尾]
,而且可能值得一提的是选择器API的兼容性问题(我认为特别是与IE<8相关的)@DavidThomas是的,我在另一个窗口中测试,发现,谢谢你指出它,感谢穆萨修复它:)@user2267668它在JSFIDLE中对我很好,但我确信我的HTML/Javascript与你实际使用的不匹配。更新你的原始问题,了解你如何使用这个函数和相关的HTML,其他然而,你不能指望事情会在未来发生box@user2267668我刚刚更新了我的答案,修正了一些问题-我的错。谢谢你发布HTML,这样我就可以完成它。它看起来对我有用。哈哈。这不是你的错,是我的错。当你看不到整个范围时,很难理解这个问题。这是我的错。谢谢你花时间和时间帮帮我吧!它很好用。是的,我想这会管用,但它不管用。我也试过了。
for(var i=0; i < document.contactForm["qualities[]"].length; i++){