2012-07-25 82 views
0

如何在复选框验证后停止请求过程?如果复选框从未选中,我想停止请求。下面的脚本不会停止过程,即使它成功验证没有复选框被选中。javascript验证多个复选框

function addNewItem(id) { 
var i, chks = document.getElementsByName('itemCheckbox'); 
for (i = 0; i < chks.length; i++){ 
    if (chks[i].checked){ 
     return true; 
    }else{ 
     alert('No item selected'); 
     return false; 
    } 
}else{ 

if (window.XMLHttpRequest) { 
    // code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
} else { 
    // code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
} 
xmlhttp.onreadystatechange = function() { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
     document.getElementById("itemTable").innerHTML=xmlhttp.responseText; 
     initPlayWidget(); 
    } 
} 

var itemCheckbox = document.forgetMeNotForm.itemCheckbox; 
var selectedSong = ""; 

if (typeof itemCheckbox.length === 'undefined') { 
    if (itemCheckbox.checked == true) { 
     selectedSong = itemCheckbox.value + ","; 
    } 
} else { 
    for (var i=0; i < itemCheckbox.length; i++) { 
     if (itemCheckbox[i].checked) { 
      selectedItm = selectedItm + itemCheckbox[i].value + ","; 
     } 
    } 
} 

var type = document.getElementById("typeDropdown").value; 
var monthValue = document.getElementById("monthDropdown").value; 
var dayValue = document.getElementById("dayDropdown").value; 
var startTime = document.getElementById("hrDropdown1").value + document.getElementById("minDropdown1").value; 
var endTime = document.getElementById("hrDropdown2").value + document.getElementById("minDropdown2").value; 
var itmId = document.getElementById("itmNumber").value; 

xmlhttp.open("POST","/sites/" + domainName + "/themes/web/common/myLib.php" ,true); 
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
xmlhttp.send("action=addItemRule&id="+id+"&selectedItm=" + selectedItm + "&type=" + type + "&monthValue=" + monthValue 
    + "&dayValue=" + dayValue + "&startTime=" + startTime + "&endTime=" + endTime + "&itmId=" + itmId); 

} 
} 

谢谢。

+1

有和else后的for循环。看起来像一个错字..请检查。 – 2012-07-25 07:16:49

回答

0

您的代码无法编译:

function addNewItem(id) { 
var i, chks = document.getElementsByName('itemCheckbox'); 
for (i = 0; i < chks.length; i++){ 
    if (chks[i].checked){ 
     return true; 
    }else{ 
     alert('No item selected'); 
     return false; 
    } 
}else{ 
^ 
| 

尝试删除该花括号

编辑:你也不能有两个通用别人的一个如果,所以你需要改变的代码一点点,也许把第二个其他的内容中,如果条款的内容,就像这样:

function addNewItem(id) { 
    var i, chks = document.getElementsByName('itemCheckbox'); 
    for (i = 0; i < chks.length; i++) { 
     if (chks[i].checked) { 
      if (window.XMLHttpRequest) { 
       // code for IE7+, Firefox, Chrome, Opera, Safari 
       xmlhttp = new XMLHttpRequest(); 
      } else { 
       // code for IE6, IE5 
       xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      xmlhttp.onreadystatechange = function() { 
       if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
        document.getElementById("itemTable").innerHTML = xmlhttp.responseText; 
        initPlayWidget(); 
       } 
      } 
      var itemCheckbox = document.forgetMeNotForm.itemCheckbox; 
      var selectedSong = ""; 

      if (typeof itemCheckbox.length === 'undefined') { 
       if (itemCheckbox.checked == true) { 
        selectedSong = itemCheckbox.value + ","; 
       } 
      } else { 
       for (var i = 0; i < itemCheckbox.length; i++) { 
        if (itemCheckbox[i].checked) { 
         selectedItm = selectedItm + itemCheckbox[i].value + ","; 
        } 
       } 
      } 

      var type = document.getElementById("typeDropdown").value; 
      var monthValue = document.getElementById("monthDropdown").value; 
      var dayValue = document.getElementById("dayDropdown").value; 
      var startTime = document.getElementById("hrDropdown1").value + document.getElementById("minDropdown1").value; 
      var endTime = document.getElementById("hrDropdown2").value + document.getElementById("minDropdown2").value; 
      var itmId = document.getElementById("itmNumber").value; 

      xmlhttp.open("POST", "/sites/" + domainName + "/themes/web/common/myLib.php", true); 
      xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
      xmlhttp.send("action=addItemRule&id=" + id + "&selectedItm=" + selectedItm + "&type=" + type + "&monthValue=" + monthValue + "&dayValue=" + dayValue + "&startTime=" + startTime + "&endTime=" + endTime + "&itmId=" + itmId); 
     } else { 
      alert('No item selected'); 
      return false; 
     } 
    } 
} 

EDIT2:另外如果你想一次发送请求之前检查所有的复选框(并发送请求时,您可以使用另一个变量:

function addNewItem(id) { 
    var i, chks = document.getElementsByName('itemCheckbox'), valid = true; 
    for (i = 0; i < chks.length; i++) { 
     if (!chks[i].checked) { 
      valid = false; 
     } 
    } 

    if(valid) { 
     // ... 
     // do the request stuff here 
     // ... 
    } else { 
     alert('No item selected'); 
     return false; 
    } 
} 
0

您可以添加新的功能

function isChecked(){ 
    var i, chks = document.getElementsByName('itemCheckbox'); 
    for (i = 0; i < chks.length; i++){ 
    if (chks[i].checked){ 
     return true; 
    }else{ 
     alert('No item selected'); 
     return false; 
    } 
    } 
} 

,并在主函数中添加新行

function addNewItem(id) { 
    if (!isChecked()) 
    return; 
    ...