Проверьте, отмечены ли какие-либо флажки, а если нет, отобразите ошибку

76
5

Я пытаюсь сделать функцию, которая проверяет, установлены ли какие-либо флажки, созданные этой строкой

foreach ($order->get_items() as $item ){
echo "<input type='checkbox' name='productinfo[]' value='" .$item->get_name() . "|" . $item->get_quantity() . "|" . $item->get_total() ."'>";

проверяются, и если это не отображает ошибку, как вы можете сделать это с помощью php/javascript, если сможете? или вам нужен jQuery для его создания. Предпочтительно, если ни один из них не проверен, это предотвратит отправку формы

спросил(а) 2018-09-21T14:13:00+03:00 1 год, 9 месяцев назад
1
Решение
55

Это сделает трюк. Проверьте длину элемента ввода с именем productinfo [] ", который отмечен. В javascript число 0 является ложным. Все остальные являются истинными.

Функция console.error() будет регистрировать ошибку на консоли. Но вы можете изменить это на любое сообщение об ошибке, которое вам нравится.

function checkBoxCheck(e) {
if ($('input[name="productinfo[]"]:checked').length) {
console.log("at least one checked");
return true;
} else {
console.error("no checkbox checked");
return false;
}
}

$('#myForm').on('submit', checkBoxCheck);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="myForm" action="/dummy.html">
<input type='checkbox' name='productinfo[]' value='1'>
<input type='checkbox' name='productinfo[]' value='2'>
<input type='checkbox' name='productinfo[]' value='3'>
<input type='checkbox' name='productinfo[]' value='4'>

<input value="Check" type=submit>
</form>

ответил(а) 2018-09-21T15:09:00+03:00 1 год, 9 месяцев назад
39

Чтобы проверить, установлен ли флажок, используйте свойство checked в Jquery/Javascript, например:

Jquery:

var isChecked =  $('input:checkbox').is(':checked'); // to check if any checkbox is checked 

var isChecked = $('input[type=checkbox]:checked').length; // finds how many checkboxes are checked
if(length > 0){
alert(length); //alert how many checkboxes are checked
}

Javascript:

var inputElems = document.getElementsByTagName("input"),
count = 0;

for (var i=0; i<inputElems.length; i++) {
if (inputElems[i].type == "checkbox" && inputElems[i].checked == true){
count++;
}
}
alert(count)

ИЛИ вы также можете использовать: s


var length=document.querySelectorAll('input[type="checkbox"]:checked').length

Установите триггер onclick на функцию на кнопке отправки. Изменить тип кнопки из submit на button.

<button type ="button" id = "some-id" onclick = "savebutton();">

Внутри функции Javascript используйте проверку:

 function savebutton(){
if(document.querySelectorAll('input[type="checkbox"]:checked').length == 0){
alert('None of the checkboxes are checked');
}else{

var some_value = document.getElementById('id_of_some_element_you_wish_to_save').value;

$.ajax({
url : 'backend.php',
method : 'POST',
data: {values_you_want_to_send:some_value},
dataType: 'json',
success:function(data) {
window.reload();
}
error: function (xhr, ajaxOptions, thrownError) {
alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status);
alert("responseText: "+xhr.responseText);
}

});
}
}

ответил(а) 2018-09-21T14:25:00+03:00 1 год, 9 месяцев назад
39

Вы можете использовать length jQuery для проверки по крайней мере одного флажка

if($('input[type="checkbox"]:checked').length > 0){
//your code here
}else{
alert('Please check atleast one checkbox');
}

Примечание. Это проверит все флажки на странице, потому что флажок ввода не имеет класса.

ответил(а) 2018-09-21T14:19:00+03:00 1 год, 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема