, Linke tıklayın textarea metin eklemek?

2 Cevap php

Diyelim ki bu javascript var diyelim:

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

ve bunu sağlamak istiyorum bu yüzden "metin eklemek" diyor bazı html linke tıklayın ve ben metin olmak istiyorum @. $ Username. (Kullanıcı adı eklemek için PHP kullanarak). Eğer "metin ekleyin" linkine tıkladığınızda yüzden textarea @ adı içine koyacağım. Bu görselleştirmek için zordur ve ben metin ve PHP tam olarak nereye koymak emin değilim. Teşekkürler!

Textarea:

    <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>

Bu benim bağlantı ile yapmak istediğimiz de budur:

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

Bu bana rağmen bir hata (ben de AddText işlevi eklenmiştir) verir.

EDIT: Buldum! Ben hataları vardı 've "vay haha, aptalca bir hata. Herkes teşekkürler!

2 Cevap

Ooh, zor bir. Bu HTML, JavaScript fantastik miş-mash, ve PHP, değil mi?

<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>

En yıkmak edelim: $userName olan "TeaCast" taklit. Ardından <?php ?> parçası sonra tarayıcıya gönderilen alacak HTML gibi görünecektir idam etti:

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

Ah!

Ek notlar:

  • href="#" size el imleci verir ama hiçbir şey yapmaz sahte bir bağlantı kurar.
  • addslashes() PHP kodunda herhangi bir tırnak önce ters eğik çizgi koyar.
  • htmlspecialchars() çağrı sağlar ki '<' veya '&' olmaz pisliği sayfanızı gibi garip karakterler içeren bir kullanıcı adı. Kendilerini "<script>alert('haha')</script>" (evet, kendi kullanıcı adı HTML snippet'idir) adında bazı kötü kullanıcıyı söylüyorlar.

John cevabı gayet iyi çalışıyor, ancak yapabileceğiniz başka bir alternatif gibi javascript kullanıcı adınızı saklamak olduğunu:

<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>

Bu şekilde, yerine php bir demet kullanarak, daha sonra diğer işlevler için Javascript değişken adını kullanabilirsiniz.