Проверка перед отправкой на сервер

есть скрипт проверки на JavaScript
window.aChecked = new Array();         function sortChecks(){            var checks = document.getElementsByName("true[]");            var length = checks.length;            if(checks&&length){                for(var i=0;i<length;i++){                    if(checks[i].checked){                        window.aChecked.push(checks[i]);                       }                }            showValues();             }        }        function showValues(){            var length = window.aChecked.length;            if(length>0){            var st = ""                for(var i=0;i<length;i++){                    st+=window.aChecked[i].value+((i!=length-1)?', ':'');                }            }            else {                alert("сделайте выбор");            }        }    
и есть форма на html
<form action="/administrator/insert.php" method="post" onsubmit="sortChecks();">    <input type="checkbox" name="true[]" value="1" />    <input type="checkbox" name="true[]" value="2" />    <input type="checkbox" name="true[]" value="3" />    <input type="checkbox" name="true[]" value="4" /></form> 
/administrator/insert.php - скрипт обработки данных. суть в следующем: надо чтобы перед отправкой, если не выбраны ни один checkbox выводило предупреждение и не отправляло на обработку php скрипту - как это реализовать?... --у меня выводит предупреждение и отправляет на обработку.
7 ответов

обработчик onsubmit дожен вернуть false, чтоб отменить отправку. а не вывести сообщение. alert никато не запрещает, но для отмены отправки надо вставить в код "return false;"


window.aChecked = new Array();         function sortChecks(){            var checks = document.getElementsByName("true[]");            var length = checks.length;            if(checks&&length){                for(var i=0;i<length;i++){                    if(checks[i].checked){                        window.aChecked.push(checks[i]);                       }                }            showValues();             }        }        function showValues(){            var length = window.aChecked.length;            if(length>0){            var st = ""                for(var i=0;i<length;i++){                    st+=window.aChecked[i].value+((i!=length-1)?', ':'');                }            }            else {                alert("сделайте выбор");                return false;            }        }    
всеравно отправляет данные для обработки скрипту если пишу в основной функции  
  function sortChecks(){            var checks = document.getElementsByName("true[]");            var length = checks.length;            if(checks&&length){                for(var i=0;i<length;i++){                    if(checks[i].checked){                        window.aChecked.push(checks[i]);                       }                }              return false;           // showValues();             }
тогда форма не отправляется значит функция не возвращает false. 


так а у тебя в onsubmit прописано не "return sortChecks();", а просто "sortChecks();". 


вот html код:: 
<form action="php.php" method="post" onsubmit="return sortChecks();">    <input type="checkbox" name="true[]" value="1" />    <input type="checkbox" name="true[]" value="2" />    <input type="checkbox" name="true[]" value="3" />    <input type="checkbox" name="true[]" value="4" />    <input type="submit" value="Додати питання"/></form> 
вот js код::
window.aChecked = new Array();         function sortChecks(){            var checks = document.getElementsByName("true[]");            var length = checks.length;            if(checks&&length){                for(var i=0;i<length;i++){                    if(checks[i].checked){                        window.aChecked.push(checks[i]);                       }                }            showValues();             }        }        function showValues(){            var length = window.aChecked.length;            if(length>0){            var st = ""                for(var i=0;i<length;i++){                    st+=window.aChecked[i].value+((i!=length-1)?', ':'');                }            }            else {                alert("сделайте выбор");                return false;            }        }    
и все равно не работает только если ставишь  return false в функцию sortChecks тогда не отправляет! почему то с функции showValues не возвращает false хотя если ничего с chekbox не выбрано то  length  равно 0.


попробуй так:form action="php.php" method="post" onsubmit="sortChecks(); return false;">впрочем, наверняка глюк в коде, я так и не понял как такие заморочки обходились


глюк почему то во второй функции,  перенес  все в одну все работает, что то непонятно какой то полтергейст! всем спасибо за принятие участие в обсуждении темы*. 


onsubmit="sortChecks(); return false;"
можно, только в таком случае в sortChecks надо будет делать submit формы программно.