2017-05-02 22 views
1

我正在努力讓整個字符串爲輸入標籤input.value沒有獲得/設置滿弦

的價值,這是我的代碼,到目前爲止,但我不知道什麼是錯的

$message = "You have completed {$offername} [{$offerprovider}] and received {$offerpayout}"; 
echo "<input id='message' style='display: none;' value={$message}>$message</div>"; 

,但是當我檢查在JavaScript或東西,它只是輸出的第一個字You爲我停留

+0

這是模糊的,但我敢說你想'value =「$ message」> $ message' ... – arkascha

回答

0

試試這個

任何幫助,將不勝感激值

屬性值必須用單引號或雙引號括起來,否則它會用空格分隔文本。它會像這樣打印出來。

<input id="message" style="display: none;" value="You" have="" completed="" and="" received=""> 
+0

@Downvoter如果你指定原因,我會很高興嗎? –

+0

直到'$ message'被正確轉義或定義爲保存(f.e.html和單引號免費),您的回答纔是正確的。 – makadev

+0

這並不意味着它是不正確的。它並不完美。 –

2

至少有兩個問題在你的代碼:

echo "<input id='message' style='display: none;' value={$message}>$message</div>"; 

以上由線產生的HTML看起來像這樣:

<input id='message' style='display: none;' value=You have completed ...> 

有大約價值暫無報價HTML屬性值。儘管如果屬性值是單個單詞,引號是可選的,但當屬性的值包含多個單詞時需要引號;否則屬性「值」的值是Youhave,completed等是input元素的其他HTML屬性。

代碼的第二個問題來自於你在那裏放置了一些文本而沒有正確編碼HTML特殊字符。例如,如果的$offername值爲O'Brian,所生成的HTML代碼(後"value" HTML屬性的值被正確地引用)變爲:

<input id='message' style='display: none;' value='You have completed O'Brian [...] and received ...'> 

,它仍然是無效的。使用PHP函數htmlspecialchars()正確編碼HTML特殊字符以在最終HTML頁面中獲取它們的字面值。

另一個小的通知(不是顯示塞子)是引用字符。最好使用引號(")來引用HTML中的屬性值。撇號(')是允許的,但不推薦。

總而言之,更好的方式來寫的代碼是:

$message = "You have completed {$offername} [{$offerprovider}] and received {$offerpayout}"; 

$encodedMsg = htmlspecialchars($message); 
printf('<input id="message" style="display: none;" value="%s">%s</div>', 
    $encodedMsg, $encodedMsg); 

請記住,一切你把HTML應正確編碼或瀏覽器可能正確,並用比你用不同的方式解釋它意。