PHP-скрипт для игнорирования заполнителя в полях ввода - PullRequest
0 голосов
/ 14 марта 2012

У меня есть следующий скрипт с именем form.php : http://pastebin.com/kHiZ3gLY (я вставил полный скрипт ниже)

Когда я заполняю первый набор из 4 полей (оставляя2 других набора с их текстом-заполнителем) и отправьте мой вывод var_dump :

string '1|1|1|1

Height (cm)|Width (cm)|Length (cm)|Weight (kg)

Height (cm)|Width (cm)|Length (cm)|

' (length=133)

Возможно ли использовать PHP / jQuery для "игнорирования" полей, которые имеюттекст заполнителя на месте?Таким образом, мой вывод будет просто:

string '1|1|1|1' (length=7)

Большое спасибо за помощь здесь.

полный скрипт:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">

<head profile="http://gmpg.org/xfn/11">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>March 2012 Experiment</title>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js" type="text/javascript"></script>

<script src="http://digitalbush.com/files/jquery/watermarkinput/beta1/jquery.watermarkinput.js" type="text/javascript"></script>

<script type="text/javascript">
jQuery(function($){
   $("#p1height").Watermark("Height (cm)");
   $("#p1width").Watermark("Width (cm)");
   $("#p1length").Watermark("Length (cm)");
   $("#p1weight").Watermark("Weight (kg)");
   $("#p2height").Watermark("Height (cm)");
   $("#p2width").Watermark("Width (cm)");
   $("#p2length").Watermark("Length (cm)");
   $("#p2weight").Watermark("Weight (kg)");
   $("#p3height").Watermark("Height (cm)");
   $("#p3width").Watermark("Width (cm)");
   $("#p3length").Watermark("Length (cm)");
   $("#p3weight").Watermark("Weight (kg)");
});
</script>


</head>

<body>

<?php

$errors = '';

if (isset($_POST['submitform'])) {

    $ierrors = array();
    $all = '';

    // Loop over the values 1 through 3
    foreach( range( 1, 3) as $i)
    {
        // Create an array that stores all of the values for the current number
        $values = array( 
            'p' . $i . 'height' => $_POST['p' . $i . 'height'], 
            'p' . $i . 'width' => $_POST['p' . $i . 'width'], 
            'p' . $i . 'length' => $_POST['p' . $i . 'length'], 
            'p' . $i . 'weight' => $_POST['p' . $i . 'weight']
        );

        // Validate every value
        foreach( $values as $key => $value)
        {
            if( empty( $value))
            {
                $ierrors[] = "Value $key is not set";
            }
            // You can add more validation in here, such as:
            if( !is_numeric( $value))
            {
                $ierrors[] = "Value $key contains an invalid value '$value'";
            }
        }

        // Join all of the values together to produce the desired output
        $all .= implode( '|', $values) . "\n\n";
    }   

    var_dump($all);

}

?>

<form action="form.php" method="post">

    <input type="text" id="p1weight" name="p1weight" value="" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" /> 
    <input type="text" id="p1length" name="p1length" value="" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" /> 
    <input type="text" id="p1width" name="p1width" value=""  onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" /> 
    <input type="text" id="p1height" name="p1height" value="" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" /> 

    <p>&nbsp;</p>

    <input type="text" id="p2weight" name="p2weight" value="" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" /> 
    <input type="text" id="p2length" name="p2length" value="" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" /> 
    <input type="text" id="p2width" name="p2width" value="" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" /> 
    <input type="text" id="p2height" name="p2height" value="" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" /> 

    <p>&nbsp;</p>

    <input type="text" id="p3weight" name="p3weight" value="" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" /> 
    <input type="text" value="" id="p3length" name="p3length" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" /> 
    <input type="text" value="" id="p3width" name="p3width" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" /> 
    <input type="text" id="p3height" name="p3height" value="" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" />

    <p>&nbsp;</p>

    <input type="submit" name="submitform" id="submitform" />

</form>

</body>

</html>

Ответы [ 2 ]

1 голос
/ 14 марта 2012

Эта проблема является одной из многих причин, по которым вам не следует заполнять атрибут значения полей формы текстом-заполнителем.Если вы хотите иметь заполнитель текста, я рекомендую либо просмотреть некоторый javascript для наложения элементов , либо заглянуть в HTML5 атрибут заполнителя .

Чтобы действительно ответить на ваш вопрос, хотяВы можете использовать JavaScript при отправке события, чтобы отфильтровать поля формы перед отправкой.Как-то так должно начаться.

$(function(){
    $('form').submit(function(){
        $('input[type=text]', this).each(function(){
            if (this.value == this.defaultValue) this.value = '';
        });
    });
});
0 голосов
/ 14 марта 2012

HTTP не публикует отключенные входы.Попробуйте отключить входные данные при отправке формы, чтобы она не отправлялась на сервер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...