Изменить существующую валидацию, чтобы приспособиться к onfocus? - PullRequest
0 голосов
/ 11 ноября 2011

Знаком с созданием текстовых полей в форме, подобной этому примеру: -

Name  :<input type="text" name="visitor" /><br /><br />
Email :<input type="text" name="visitormail" /><br /><br />
Phone :<input type="text" name="visitorphone"/><br /><br />

и проверкой так же, как в примере этого типа: -

$vname = $_GET["visitor"];
$vemail = $_GET["visitormail"];
$vphone = $_GET["visitorphone"];

    // VALIDATION INTRODUCTION - THESE ARE THE FORM FIELDS THAT WE REQUIRED THE VISITOR TO FILL IN  
        if(empty($vname) 
        || empty($vemail) 
        || empty($vphone)) 
        { 
        echo "<h2>Go Back and fill in all fields  </h2>\n";
        die ("Use the Go Back button !! ");
        }
        if(!$vemail == "" && (!strstr($vemail,"@") || !strstr($vemail,"."))) 
        {
        echo "<h2>Go Back and enter a valid E-mail Address</h2>\n";
        die ("Use the Go Back button !!");  
        }

Вышеприведенный скрипт работает .... посмотрите это изображение!Alternate form layout

У меня есть вопрос ???

Когда форма создается с текстовыми полями onfocus, как в следующем примере: -

<input type="text" name="visitor" value="NAME" size="23" onfocus="if (this.value == 'NAME') {this.value = '';}" onblur="if (this.value == '') {this.value = 'NAME';}">

.... вышеупомянутая проверка больше не работает, поскольку уже есть запись в текстовом поле!

Может ли вышеуказанная проверка быть принятой для использования в новом onfocusситуация?

1 Ответ

0 голосов
/ 11 ноября 2011

Простейшим способом было бы изменить выражение if вашего текущего сценария следующим образом:

if((empty($vname) || trim(strtolower($vname)) == 'name')
|| (empty($vemail) || trim(strtolower($vemail)) == 'email') 
|| (empty($vphone) || trim(strtolower($vphone)) == 'phone'))

Это должно выполнить работу, если вы довольны текущим сценарием, но в целом вы могли бы сделать намного лучшекогда дело доходит до вашей проверки, так как она кажется довольно подверженной ошибкам и не кажется удобной для пользователя - опять же, это пример сценария, так что, возможно, это специально.

В любом случае, как я уже сказал, это будетбыть самым простым способом с вашим текущим сценарием, хотя и не самым лучшим способом.

...