|
|
|
|
|
для: CrazyAngel
(28.06.2007 в 11:58)
| | про $ я знаю
в функциях перечисление аргументов ведется не через . а через , | |
|
|
|
|
|
|
|
для: CNT
(27.06.2007 в 21:40)
| | хм... понял :) ...
просто я постоянно работаю с prototype ...)
функция $ работает как document.getElementById ...) | |
|
|
|
|
|
|
|
для: CNT
(27.06.2007 в 21:40)
| | ммм..... я бы тоже не отказался узнать...
eval'ы прикрутил....
кстати, часом никто не собирался делать подсветку js - кода? | |
|
|
|
|
|
|
|
для: CrazyAngel
(27.06.2007 в 12:36)
| | Я очень извиняюсь за вопрос... но не будете ли вы любезны рассказать, в каком из браузеров, существующих в природе, представленный здесь вами код хоть как-то работает? | |
|
|
|
|
|
|
|
для: CNT
(26.06.2007 в 16:45)
| | хм... я просил оценить идею, помоему удобный механизм переноса javascript а форма была только ради примера
вот немного доработанный вариант
<?php
<form id='form' onsubmit="return validation()">
<table>
<tr>
<td>
<input type='text' id='login' name='Login_NaMe' value='Ваш логин'>
</td>
<td>
<div id='login_messages'></div>
</td>
</tr>
<tr>
<td>
<input type='text' id='email' name='mail_from_to' value='Ваш email'>
</td>
<td>
<div id='email_messages'></div>
</td>
</tr>
<tr>
<td>
<textarea id='mess' name='mess_messages'></textarea>
</td>
<td>
<div id='mess_messages'></div>
</td>
</tr>
<tr>
<td>
<input type='text' id='123' name='123_NaMe'>
</td>
<td>
<div id='123_messages'></div>
</td>
</tr>
<tr>
<td align='submit'>
<input type='submit' value='фпиред'>
</td>
</tr>
</form>
<script type="text/javascript">
/* Проверяющие функции */
function notBlank(){
var messages = "Это поле не может быть пустым и должно быть не менее 3 символов";
if(param == null || param.lenght < 3)
return messages;
if(!/\S{3,}/.test(param))
return messages;
return false;
}
function onlyLatin(){
var messages = "Это поле должно состоять только из латинских символов";
if(!/^[a-z\d]+$/i.test(param))
return messages;
return false;
}
function email(){
var messages = "Неправильный email";
if(!/[^@]+@\w+/.test(param))
return messages;
return false;
}
function onlyNumber(){
var messages = "Только цифры";
if(!/^-?\d+$/.test(param))
return messages;
return false;
}
/* Проверяющие функции(конец) */
/* Проверяемые поля массив вида id поля, проверяющая функция */
var validations = new Array();
validations[0] = ['login','notBlank()'];
validations[1] = ['login','onlyLatin()'];
validations[2] = ['email','notBlank()'];
validations[3] = ['email','email()'];
validations[4] = ['mess','notBlank()'];
validations[5] = ['123','onlyNumber()'];
validations[6] = ['123','notBlank()'];
/* Проверяемые поля(конец) */
// переменная в которой хранится значения поля, созданна из-за проблем с русским текстом ...
var param;
var is_error;
// главная функция
function validation(){
var i
var field;
var messages;
var error;
var errors = new Array();
is_error = false;
for(i=0; i<validations.length; i++){
field = $(validations[i][0]);
messages = $(validations[i][0]+"_messages")
param = field.value;
error = eval(validations[i][1]);
if(error){
if(errors[validations[i][0]]){
messages.innerHTML += "<br>"+error;
}
else
messages.innerHTML = error;
errors[validations[i][0]] = true;
is_error = true;
}else{
if(!(errors[validations[i][0]]))
messages.innerHTML = 'все ok';
}
}
if(is_error) return false;
else return true;
}
function start_check_form(){
var name = new Array;
for(i=0; i<validations.length; i++){
if(!name[validations[i][0]]){
$(validations[i][0]).onchange = change;
name[validations[i][0]] = true;
}
}
}
function change(){
var i
var field;
var messages;
var error;
var errors = new Array();
for(i=0; i<validations.length; i++){
if(this.id != validations[i][0])
continue;
field = $(validations[i][0]);
messages = $(validations[i][0]+"_messages")
param = field.value;
error = eval(validations[i][1]);
if(error){
if(errors[validations[i][0]]){
messages.innerHTML += "<br>"+error;
}
else
messages.innerHTML = error;
errors[validations[i][0]] = true;
}else{
if(!(errors[validations[i][0]]))
messages.innerHTML = 'все ok';
}
}
}
start_check_form()
</script>
?>
|
| |
|
|
|
|
|
|
|
для: CrazyAngel
(26.06.2007 в 15:41)
| | Оцениваю: скрипт, во-первых, бредовый; во-вторых, неработающий.
1. Чтобы данные формы отправились, необходимо иметь у полей формы атрибут NAME.
У вас же везде ID.
2. name - это атрибут тегов HTML, form - это имя тега HTML.
У вас же эти уже используемые браузером имена реализованы в виде имен ваших объектов. Фантазии назвать иначе, дабы не путаться самому и не путать браузер, у вас не хватает? Или какой-то смысл тайный есть - сидеть и разбираться - где какой name в данном конкретном случае имеется в виду?
3. Чтобы данные формы отправились, необходимо иметь что-то, что делает submit формы - например, кнопку <input type="submit"> или же скрипт, вызывающий метод форма.submit ().
У вас же использована кнопка <input type="button"> нажатие которой по умолчанию не имеет никаких программных последствий. Вы вешаете на эту кнопку скрипт, который должен кнопке возвращать true или false (в зависимости от результатов проверки). Ну и что, по-вашему, кнопка с этим true (false) делать будет? Солить как грибы? Замечу в скобках, что даже и возврата значений true (false) у вас не происходит, ибо записано у вас неверно - в инструкции при ONCLICK нет у вас метода return.
4. Синтаксис регулярных выражений вы не знаете. Вы проверяете только первый символ введенного в текстовое поле.
5. Нормальный работающий скрипт проверки наличия не менее 3-х латинских символов и цифр в поле ввода занимает 1-2 (одну-две) строчки кода.
У вас же - целая простыня, кою вы хотите ещё и улучшить.
<form name="ABCform">
<input type=text name="DEFname">
<div id='name_messages'>Допускаются только латинские символы любого регистра и цифры в количестве не менее 3-х</div>
<input type="submit" value="Отправить" onclick="return validation ();">
</form>
<script>
function validation ()
{
with (document.ABCform.DEFname) if (value.length < 3 || value.replace (/[a-z\d]/gi, '').length > 0)
{alert (document.getElementById ('name_messages').innerHTML); focus (); return false}
else return true;
}
</script>
|
UPDATE: ещё учтите, что в форме у вас только одно текстовое поле, поэтому сабмит формы возможен и при нажатии клавиши ENTER. Если других полей в форме не будет, надо проверку ввода прописать не на кнопке "Отправить", а на теге <FORM onsubmit = "return validation ()"> | |
|
|
|
|
|
|
|
<form id='form'>
<input type=text id='name'>
<div id='name_messages'> Допускаются только латинские буквы</div>
<input type="button" value="Отправить" onclick="validation();">
</form>
<script type="text/javascript">
/* Проверяющие функции */
function notBlank(){
var messages = "Это поле не может быть пустым и должно быть не менее 3 символов";
if(param == null || param.lenght < 3)
return messages;
if(!/\S{3,}/.test(param))
return messages;
return false;
}
function onlyLatin(){
var messages = "Это поле должно состоять только из латинских символов";
alert(!/[a-z\d]?/i.test(param));
if(!/[a-z\d]+/i.test(param))
return messages;
return false;
}
/* Проверяющие функции(конец) */
/* Проверяемые поля массив вида id поля, проверяющая функция */
var validations = new Array();
validations[0] = ['name','notBlank()'];
validations[1] = ['name','onlyLatin()'];
/* Проверяемые поля(конец) */
// переменная в которой хранится значения поля, созданна из-за проблем с русским текстом ...
var param;
// главная функция
function validation(){
var i
var field;
var messages;
var error;
var errors = new Array();
for(i=0; i<validations.length; i++){
field = $(validations[i][0]);
messages = $(validations[i][0]+"_messages")
param = field.value;
error = false;
error = eval(validations[i][1]);
if(error){
if(errors[validations[i][0]]){
messages.innerHTML += "<br>"+error;
}
else
messages.innerHTML = error;
errors[validations[i][0]] = true;
}else{
if(!(errors[validations[i][0]]))
messages.innerHTML = 'все ok';
}
}
return false;
}
</script>
|
подскажите, что можно улучшить... | |
|
|
|
|