Jquery остановить форму отправки, если флажок не установлен - PullRequest
11 голосов
/ 25 января 2011

У меня есть этот код, но, похоже, он не возвращает true.Предупреждение всегда появляется.Любые мысли (без необходимости создавать переменную, в которой будет сохранен этот флажок, поскольку это выглядит немного странно).

Спасибо.

$("#form").submit(function(e) {
    $('input[type=checkbox]').each(function () {
        if(this.checked){
            return true;
        }
    });
    alert("Please select at least one to upgrade.");
    return false;
});

Ответы [ 5 ]

19 голосов
/ 26 января 2011

Вам не нужно делать цикл, чтобы определить, установлен ли флажок.Селектор :checked отфильтровывает все, что не проверено.Затем вы можете использовать $.length, чтобы получить количество проверенных входов.

$("#form").submit(function(e) {
    if(!$('input[type=checkbox]:checked').length) {
        alert("Please select at least one to upgrade.");

        //stop the form from submitting
        return false;
    }

    return true;
});

Кроме того, используя ваш подход, небольшое изменение должно сделать эту работу

$("#form").submit(function(e) {
    $('input[type=checkbox]').each(function () {
        if($(this).is(':checked')){
            return true;
        }
    });
    alert("Please select at least one to upgrade.");
    return false;
});

Я думаю, вы можете просто пропустить $() вокруг this

3 голосов
/ 25 января 2011

Просто отметим, что вы используете идентификационную ссылку #form. Вы имели в виду просто ссылаться на все формы, или у формы есть идентификатор form?

0 голосов
/ 20 декабря 2016
var atleast = 1;
function validate() {
    debugger;
    var CHK = document.getElementById("<%=chk1");
    var checkbox = document.getElementsByTagName("input");
    var counter = 0;
    for (var i = 0; i < checkbox.length; i++) {
        if (checkbox[i].checked) {
            counter++;
        }
    }
    if (atleast > counter) {
        alert("Please select atleast " + atleast + " employee ");
        return false;
    }
    return true;
}

<button type="submit" name="Initiate" value="Initiate" on click="return validate()" id=" initiate"></button>
0 голосов
/ 16 января 2013

Код для клика и ввода кнопки отправки:

 $(":input").bind("click keypress", function(evt) {   
     var keyCode = evt.which || evt.keyCode;
     var sender = evt.target;                 
     if (keyCode == 13 || sender.type == "submit") {                        
        evt.preventDefault();  
        // add your validations
     }
     // and submit the form
 }
0 голосов
/ 25 января 2011

Пример проверки количества проверенных чекбоксов ...

<script>

    function countChecked() {
      var n = $("input:checked").length;
      $("div").text(n + (n <= 1 ? " is" : " are") + " checked!");
    }
    countChecked();
    $(":checkbox").click(countChecked);

</script>

Выше "$ (" input: checked ")" возвращает массив проверенных элементов ... Вы можете проверить "length"этого массива для>> 0.

...