Порядок, в котором связаны библиотеки, имеет значение, если библиотеки зависят друг от друга. В общем случае, если библиотека A
зависит от библиотеки B
, тогда libA
ДОЛЖЕН появляться перед libB
в флагах компоновщика.
Например:
// B.h
#ifndef B_H
#define B_H
struct B {
B(int);
int x;
};
#endif
// B.cpp
#include "B.h"
B::B(int xx) : x(xx) {}
// A.h
#include "B.h"
struct A {
A(int x);
B b;
};
// A.cpp
#include "A.h"
A::A(int x) : b(x) {}
// main.cpp
#include "A.h"
int main() {
A a(5);
return 0;
};
Создайте библиотеки:
$ g++ -c A.cpp
$ g++ -c B.cpp
$ ar rvs libA.a A.o
ar: creating libA.a
a - A.o
$ ar rvs libB.a B.o
ar: creating libB.a
a - B.o
Скомпилируйте:
$ g++ main.cpp -L. -lB -lA
./libA.a(A.o): In function `A::A(int)':
A.cpp:(.text+0x1c): undefined reference to `B::B(int)'
collect2: error: ld returned 1 exit status
$ g++ main.cpp -L. -lA -lB
$ ./a.out
Чтобы повторить снова, порядок имеет значение!
Поскольку вы не можете установить value=""
в свой первый option
, вам нужно создать свое собственное правило, используя встроенный метод addMethod()
.
jQuery:
$(document).ready(function () {
$('#myform').validate({ // initialize the plugin
rules: {
year: {
selectcheck: true
}
}
});
jQuery.validator.addMethod('selectcheck', function (value) {
return (value != '0');
}, "year required");
});
HTML:
<select name="year">
<option value="0">Year</option>
<option value="1">1955</option>
<option value="2">1956</option>
</select>
Рабочая демонстрация: http://jsfiddle.net/tPRNd/
Исходный ответ: (Только если вы можете установить value=""
в течение первого option
)
Чтобы правильно проверить элемент select
с плагином jQuery Validate, просто требуется, чтобы первый option
содержит value=""
. Поэтому удалите 0
из value="0"
и он исправлен.
jQuery:
$(document).ready(function () {
$('#myform').validate({ // initialize the plugin
rules: {
year: {
required: true,
}
}
});
});
HTML:
<select name="year">
<option value="">Year</option>
<option value="1">1955</option>
<option value="2">1956</option>
</select>
Демонстрация: http://jsfiddle.net/XGtEr/
JQuery Select Box Validation. Вы можете оповещать сообщение через оповещение или поместить сообщение в Div согласно вашим требованиям.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="message"></div>
<form method="post">
<select name="year" id="year">
<option value="0">Year</option>
<option value="1">1919</option>
<option value="2">1920</option>
<option value="3">1921</option>
<option value="4">1922</option>
</select>
<button id="clickme">Click</button>
</form>
<script>
$("#clickme").click(function(){
if( $("#year option:selected").val()=='0'){
alert("Please select one option at least");
$("#message").html("Select At least one option");
}
});
</script>
http://docs.jquery.com/Plugins/Validation/Methods/required
отредактируйте код для 'select', как показано ниже, для проверки на 0 или null выбор значения из списка выбора
case 'select':
var options = $("option:selected", element);
return (options[0].value != 0 && options.length > 0 && options[0].value != '') && (element.type == "select-multiple" || ($.browser.msie && !(options[0].attributes['value'].specified) ? options[0].text : options[0].value).length > 0);
Чтобы установить правило выбора в списке выбора, вам просто нужно вариант с пустым значением
<option value="">Year</option>
, поэтому достаточно применить требуемое само по себе
<script>
$(function () {
$("form").validate();
});
</script>
с формой
<form>
<select name="year" id="year" class="required">
<option value="">Year</option>
<option value="1">1919</option>
<option value="2">1920</option>
<option value="3">1921</option>
<option value="4">1922</option>
</select>
<input type="submit" />
</form>
немного упростите все это, исправьте некоторые проблемы запятыми, которые взорвут некоторые браузеры:
$(document).ready(function () {
$("#register").validate({
debug: true,
rules: {
year: {
required: function () {
return ($("#year option:selected").val() == "0");
}
}
},
messages: {
year: "Year Required"
}
});
});
Прыгая к предположению, если ваш выбор не имеет этого атрибута validate="required:true"
?