Использует рекурсию.
function flatten($array) {
if (!is_array($array)) {
// nothing to do if it's not an array
return array($array);
}
$result = array();
foreach ($array as $value) {
// explode the sub-array, and add the parts
$result = array_merge($result, flatten($value));
}
return $result;
}
$arr = array('foo', array('nobody', 'expects', array('another', 'level'), 'the', 'Spanish', 'Inquisition'), 'bar');
echo '<ul>';
foreach (flatten($arr) as $value) {
echo '<li>', $value, '</li>';
}
echo '<ul>';
Выход:
<ul><li>foo</li><li>nobody</li><li>expects</li><li>another</li><li>level</li><li>the</li><li>Spanish</li><li>Inquisition</li><li>bar</li><ul>
Выход:
<ul><li>foo</li><li>nobody</li><li>expects</li><li>another</li><li>level</li><li>the</li><li>Spanish</li><li>Inquisition</li><li>bar</li><ul>
, на самом деле это должно сработать Если вы будете использовать классы вместо инициализации rules как параметры validate ().
Разметка:
<input id="foo[0]" class="required"
<input id="bar[0]" class="required number"
<input id="foo[1]" class="required"
<input id="bar[1]" class="required email"
jQuery:
$(document).ready(function() {
var validator = $("#form_id").validate({
messages: {
name: "Please enter your name",
address: "Please enter your address",
age: {
required: "Please enter your age",
number: "Please enter a number"
}
}
});
});
надеюсь, что это сработает. Синан.
Нет ответов, поэтому я опубликую свое "временное" решение, которое заключается в установке правил встроенной проверки для 'required' и 'type', оставляя 'maxlength' для проверки на стороне сервера, затем отображать настраиваемые сообщения со встроенным тегом заголовка.
Вероятно, этого достаточно для целей данной работы, но мне все еще любопытно, есть ли способ сделать это «полностью» в jQuery.
Вы пробовали использовать пользовательский правила классов для определения несовместимых правил xhtml?
В примере в документах используется только один класс, но я полагаю, вы могли бы комбинировать различные настраиваемые классы для достижения нужных вам правил проверки. Я сам не пробовал.