Чтобы проверить правильность определенного поля, используйте:
$('#myField')[0].checkValidity(); // returns true/false
. Чтобы проверить, действительна ли форма, используйте:
$('#myForm')[0].checkValidity(); // returns true/false
Если вы хотите отобразить что некоторые браузеры имеют (например, Chrome), к сожалению, единственный способ сделать это - отправить форму, например:
var $myForm = $('#myForm');
if(! $myForm[0].checkValidity()) {
// If the form is invalid, submit it. The form won't actually submit;
// this will just cause the browser to display the native HTML5 error messages.
$myForm.find(':submit').click();
}
Надеюсь, это поможет. Имейте в виду, что проверка HTML5 не поддерживается во всех браузерах.
Вы не можете хранить массивы в векторах (или в любом другом стандартном контейнере библиотеки). Вещи, которые хранят стандартные библиотечные контейнеры, должны быть копируемыми и назначаемыми, и массивы не являются ни одним из них.
Если вам действительно нужно поместить массив в вектор (а вы, вероятно, этого не делаете - использование вектора векторов или вектора строк более вероятно, что вам нужно), то вы можете заключить массив в структуру:
struct S {
char a[10];
};
, а затем создать вектор структур:
vector <S> v;
S s;
s.a[0] = 'x';
v.push_back( s );
Используйте std::string
вместо массивов символов
std::string k ="abcde";
std::vector<std::string> v;
v.push_back(k);
Вы можете напрямую определить вектор типа символа, как показано ниже.
vector<char> c = {'a', 'b', 'c'};
vector < vector<char> > t = {{'a','a'}, 'b','b'};
FFWD к 2019. Хотя этот код worketh в 2011 также.
// g++ prog.cc -Wall -std=c++11
#include <iostream>
#include <vector>
using namespace std;
template<size_t N>
inline
constexpr /* compile time */
array<char,N> string_literal_to_array ( char const (&charrar)[N] )
{
return std::to_array( charrar) ;
}
template<size_t N>
inline
/* run time */
vector<char> string_literal_to_vector ( char const (&charrar)[N] )
{
return { charrar, charrar + N };
}
int main()
{
constexpr auto arr = string_literal_to_array("Compile Time");
auto cv = string_literal_to_vector ("Run Time") ;
return 42;
}
Совет: попытайтесь оптимизировать использование std::string
. Для символа, буферизующего std::array<char,N>
, является самым быстрым, std::vector<char>
быстрее.
Вам понадобится
char test[] = "abcde"; // This will add a terminating \0 character to the array
std::vector<std::string> v;
v.push_back(test);
Of, если вы хотели создать вектор символов вместо вектора строк,
std::vector<char> v(test, test + sizeof(test)/sizeof(*test));
Выражение sizeof ( test) / sizeof (* test)
предназначен для вычисления количества элементов в массиве test.
Для этого можно использовать boost :: array :
boost::array<char, 5> test = {'a', 'b', 'c', 'd', 'e'};
std::vector<boost::array<char, 5> > v;
v.push_back(test);
Редактировать:
Или вы можете использовать вектор векторов, как показано ниже:
char test[] = {'a', 'b', 'c', 'd', 'e'};
std::vector<std::vector<char> > v;
v.push_back(std::vector<char>(test, test + sizeof(test)/ sizeof(test[0])));