Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Оцените скрипт проверки полей формы

Сообщения:  [1-7] 

 
 автор: bronenos   (28.06.2007 в 12:11)   письмо автору
 
   для: CrazyAngel   (28.06.2007 в 11:58)
 

про $ я знаю
в функциях перечисление аргументов ведется не через . а через ,

   
 
 автор: CrazyAngel   (28.06.2007 в 11:58)   письмо автору
 
   для: CNT   (27.06.2007 в 21:40)
 

хм... понял :) ...
просто я постоянно работаю с prototype ...)
функция $ работает как document.getElementById ...)

   
 
 автор: bronenos   (27.06.2007 в 23:48)   письмо автору
 
   для: CNT   (27.06.2007 в 21:40)
 

ммм..... я бы тоже не отказался узнать...
eval'ы прикрутил....

кстати, часом никто не собирался делать подсветку js - кода?

   
 
 автор: CNT   (27.06.2007 в 21:40)   письмо автору
 
   для: CrazyAngel   (27.06.2007 в 12:36)
 

Я очень извиняюсь за вопрос... но не будете ли вы любезны рассказать, в каком из браузеров, существующих в природе, представленный здесь вами код хоть как-то работает?

   
 
 автор: 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=0i<validations.lengthi++){
        
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=0i<validations.lengthi++){
        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=0i<validations.lengthi++){
        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>
?>

   
 
 автор: CNT   (26.06.2007 в 16:45)   письмо автору
 
   для: 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 ()">

   
 
 автор: CrazyAngel   (26.06.2007 в 15:41)   письмо автору
 
 


<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>


подскажите, что можно улучшить...

   

Сообщения:  [1-7] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования