2017-05-30 62 views
1

當我編寫我的第一個HTML和PHP表單時,我被告知,即使通過發送變量發送表單,仍然可以看到用戶的輸入,這是非常好的。所以我的第一個形式看起來是這樣的:表單中的默認值和用戶輸入

<input type="text" name="name" value="<?php echo $name; ?>" /> 

我進行檢查,如果有什麼用戶輸入,如果有不顯示的錯誤:

if (!empty($name)) {      
    $flag_name = TRUE; 
} 
else { 
    echo "Please fill in your name"; 
    $flag_name = FALSE; 
} 

最近,我開始工作與JavaScript,我偶然發現了一個非常有用的代碼片段,這使得有可能寫入一個默認值的形式,當你點擊它被清除。它看起來像這樣,它很好用!

<input id="name" name="name" onblur="if (this.value=='') this.value='Name'" onfocus="if (this.value=='Name') this.value='';" type="text" value="Name" /> 

爲了使它不可能爲了人提交這些默認值,我改變了我的PHP檢查,檢查的默認值:

if (!empty($name) && $name != 'Name') {     
    $flag_name = TRUE; 
} 
else { 
    echo "Please fill in your name"; 
    $flag_name = FALSE; 
} 

我仍然不是很滿意我的新形式。如果您嘗試使用默認值提交,您會收到一條錯誤消息 - 很好。但那你必須再次填寫一切

我想結合這與我第一次嘗試,與變量之一。用戶應該看到一個默認值,當他點擊表單時會消失。在填補空白並點擊提交之後,他們仍然應該能夠看到他們寫的內容。

這可能嗎?

+8

查看輸入的「佔位符」屬性;它基本上會自動執行該行爲,不需要JavaScript –

+0

另外,花些時間研究jQuery驗證來強制/驗證用戶輸入可能是值得的。一旦提交,您就可以'回顯'$ _POST'變量。 – JustBaron

+0

試試這個 –

回答

1

如果使用佔位符屬性就可以省略對您輸入的JS-擺弄(1)。一旦將佔位符文本與實際值分開,您也可以放棄PHP(2)中的值檢查。之後,將提交的表單值輸出回表單(3)是一件簡單的事情。

<?php 
$name = ''; 
if (isset($_POST['name'])) // (2) 
{ 
    $name = $_POST['name']; 
    if (strlen(trim($_POST['name'])) > 0) 
    { 
    $flag_name=TRUE; 
    } 
    else 
    { 
    echo "Please fill in your name"; 
    $flag_name=FALSE; 
    } 
?> 
<form method="post"> 
    <!--       (1)            (3)--> 
    <input id="name" name="name" placeholder="Your name here!" type="text" value="<? echo $name; ?>" /> 
</form> 
1

你可以在你的HTML形式,滿足您的要求

<input id="name" name="name" type="text" value="" placeholder="Name" /> 

希望這將有助於你不需要jQuery的功能也

,如果你想添加jQuery驗證爲其他檢查,然後用html placeholder你可以這樣做,但這個目的沒有必要的jQuery

所以你可以使用這樣的事情

<form action=""> 
    <input type="text" name="fname" placeholder="First name"><br> 
    <input type="text" name="lname" placeholder="Last name"><br> 
    <input type="submit" value="Submit"> 
</form> 

https://www.w3schools.com/tags/att_input_placeholder.asp