2009-07-01 85 views
3

比方說,我有這樣的javascript:點擊鏈接,將文本添加到textarea?

<script language="javascript" type="text/javascript"> 
function addtext() { 
    var newtext = document.myform.inputtext.value; 
    document.myform.description.value += newtext; 
} 
</script> 

,我想啓用它,所以我可以點擊一些HTML鏈接,上面寫着「添加文本」和我想的文本是@。 $用戶名。 (使用PHP來插入用戶名)。所以當你點擊「添加文本」鏈接時,它會放入textarea @username。這很難形象化,我不確定把文本和PHP放在哪裏。謝謝!

多行文本:

<form Name ="myform" action="<?$posted = $_POST['description']; 
    $object->post_tweet($posted); ?>" method="post"> 
    <table align="left" border="0" cellspacing="1" cellpadding="5"> 
     <tr> 

     <td class="2"> 
    <textarea name='description' class="color" COLS=84 ROWS=2 type="text" id="eBann" name="bannerURL" maxlength="100" size="60" onKeyUp="toCount('eBann','sBann','{CHAR} characters left',140);"></textarea> 
    <br> 
     <span id="sBann" class="minitext">140 characters left.</span> 
    </td> 
    </tr> 
</table><BR><BR><BR> 
<p><input type='submit' value='Tweet!' /><input type='hidden' value='1' name='submitted' /> </p> 
</form> 

這就是我想用做鏈接:

<a href="#" onclick="addtext("@'. $twit->user->screen_name .'"); return false>reply</a>' 

這給了我,雖然一個錯誤(我加了addtext功能太)。

編輯:明白了!我曾與「和」哇哈哈,愚蠢的錯誤。謝謝大家的錯誤!

回答

7

哦,艱難的一個。這是HTML,JavaScript和PHP的一個夢幻般的大雜燴,不是嗎?

<script language="javascript" type="text/javascript"> 
function addtext(text) { 
    document.myform.description.value += text; 
} 
</script> 

... 

<a href="#" onclick="addtext('@<?php echo htmlspecialchars(addslashes($userName)) ?>'); return false" 
    >reply</a> 

讓我們打破下來:假裝$userName"TeaCast"然後<?php ?>部分已被執行之後,將獲得發送到瀏覽器的HTML看起來像:

<a href="#" onclick="addtext('@TeaCast'); return false" 
    >reply</a> 

!個

其他注意事項:

  • href="#"建立一個假的鏈接,讓你的手形光標,但不會做任何事情。
  • PHP代碼中的addslashes()在任何引號前加反斜槓。
  • htmlspecialchars()調用可確保包含奇怪字符(如'<''&')的用戶名不會弄亂您的頁面。說一些自稱爲"<script>alert('haha')</script>"的惡意用戶(是的,他們的用戶名是HTML的片段)。
+0

啊,我大部分都是你說得對,我只是需要知道在哪裏把PHP哈哈感謝約翰! – 2009-07-01 03:26:45

+0

哦,實際上約翰,我想鏈接的名稱說「回覆」,而不是@用戶名,但有@用戶名出現在文本框中。 – 2009-07-01 03:28:51

0

約翰的回答能正常工作,但另一種選擇,你可以做的是用戶名存儲在JavaScript中,如:

<script language="javascript" type="text/javascript"> 
var username = '<?php echo htmlspecialchars(addslashes($userName)) ?>'; 

function addtusername() { 
    document.myform.description.value += "@" + username; 
} 
</script> 

... 

<a href="#" onclick="addusername(); return false">reply</a> 

這樣,您就可以使用在JavaScript中的變量名的其他功能後來,而不是使用一堆的PHP。