Я использую Jquery проверить addmethod для формы множественного выбора. Я не понимаю данные / типы данных, передаваемые методу (значению, элементу), чтобы можно было написать желаемое условие. Условие должно проверять, было ли выбрано более двух параметров, и если «Смешанное» является одним из значений, вернуть ошибку. Я приложил скриншот моих усилий по отладке для печати типов объектов и значений. В моем реальном коде условие, которое я выполняю (если значение == 1), очевидно, не работает из-за типов данных, которые были только для тестирования.
Пример желаемой функциональности
$.validator.addMethod(
"mixedbreed",
function(value, element) {
if ( value.length >= 2 && value.includes("Mixed") ) {
return false;
}
},
"Can't use 'Mixed' with other options"
);
HTML
<html>
<head>
<?php echo $html_head ?>
<link rel="stylesheet" href="css/animal.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.1/jquery.validate.min.js"></script>
</head>
<body>
<?php echo $html_navigation ?>
<h2 align="center">Edit Animal</h2>
<div align="center" class="container">
<form name="animal" id="animal" method="POST">
Breeds:
<select name="breeds[]" id="breeds" multiple>
<option>--Species Required--</option>
</select>
<input type="submit" name="animal_form" onclick="submitForm();"/>
</form>
</div>
</body>
</html>
Данные о породах
<?php
include_once('../resources/config.php');
include_once('session.php');
$result = sql_select_available_breeds("Cat");
while( $row = pg_fetch_row($result) ) {
echo sprintf("<option value='%s'>%s</option>",
$row[1], $row[1]);
}
?>
JQuery
function submitForm() {
$.validator.addMethod(
"mixedbreed",
function(value, element) {
if ( value.length == 1 ) {
return false;
}
},
function(value, element) {
return "Bad value: " + value + " " + element[0].text + " " + typeof element[0];
}
);
var animal_validator = $("#animal").validate({
rules: {
'breeds[]': {
required: true,
mixedbreed: true
}
},
errorElement: "span",
messages: {
'breeds[]': {
required: "b required "
}
}
});
if (animal_validator.form()) {
$('form#animal').attr({
action: 'mycontroller'
});
$('form#animal').submit();
}
}
Результат
Я пытался понять типы объектов и структуры данных. Я не могу различить guish опции, которые были выбраны из нет.