【问题标题】:Change input tag value on click or alternative method?单击或替代方法更改输入标签值?
【发布时间】:2013-04-14 02:47:24
【问题描述】:

我有一些 PHP 代码可以打印交易表中的数据行。每一行都像

用户名-报价-交换-日期-交易

TRADE 是一个输入,点击后,相关的 PHP 会检查并相应地更新数据库。

如果是 POST 等

$idn=strip_tags($_POST['buy']));

$query1=$db->prepare("SELECT * FROM tradeauction WHERE id=:buyid");
$query1->execute(array(':buyid'=>$idn));

///检查等等。

这是包含 TRADE 输入/按钮的 div: (我知道这可能是一个很长的路要走,但它的旧代码,我只是想整理它并将整个站点从 mysql 转换为 PDO。)

        <div class="buyrow left">
        <?PHP echo"<input class=\"changeBlue\" onmouseover=\"this.className='changeBlueoff'; document.getElementById('$ct->id').className='changeBlueoff'\" 
    onmouseout=\"this.className='changeBlue'; getElementById('$ct->id').className='changeBlue'\" 
onclick=\"this.value='$ct->id'; this.submit()\" type=\"submit\" value=\"Trade\" name=\"buy\">"; ?> &nbsp; 
       </div>

    $ct->id

显然是行的id。

类的改变只是改变按钮的颜色。

当前单击时,它可以工作,但会向用户简要显示 id。我不希望这种情况发生。我只想让它一直简单地说交易。 (悬停时为蓝色)

如何使单击时不显示该值,但仍将 id 值传递给 PHP 检查?或者有人可以提出另一种更简单的方法来实现这一目标吗?

编辑:对于交易中的每个 ID(行),它将以 HTML 格式打印 -

<div id="cashtrades">
  <div class="trrow left"> <?php echo "<a href=profile.php?viewuser=$ct->username >$ct->username</a>"?></div>
  <div class="prrow left"><?PHP echo"$showname"; ?></div>
  <div class="ofrow left"><?PHP echo"$symbolcheck".makecomma($ct->item_amount)." $itemcheck"; ?> </div>
  <div class="exrow left"><?PHP echo"$exsymcheck".makecomma($ct->exchange_amount)." $exitemcheck"; ?></div>
  <div class="darow left"><?PHP echo"$ct->datepost"; ?></div>
  <div class="buyrow left"><?PHP echo"<input class=\"changeBlue\" onmouseover=\"this.className='changeBlueoff'; document.getElementById('$ct->id').className='changeBlueoff'\" 
          onmouseout=\"this.className='changeBlue'; getElementById('$ct->id').className='changeBlue'\" 
          onclick=\"this.value='$ct->id'; this.submit()\" type=\"submit\" value=\"Trade\" name=\"buy\">";?>&nbsp;</div> 
  </div>

【问题讨论】:

  • 您的用户 ID 在哪里回显到 html 中,我在您的代码中看不到?
  • 没有用户ID。 $ct->id 是数据库中包含交易详情的行的id。
  • 好的,我明白了。您可以编写一个 javascript 函数来设置隐藏输入项的值,并在您的 php 代码中使用它而不是您正在更新的输入吗?
  • 好的,我明白了。所以理论上我会用getElementById('hidden').value代替this.value,但用一个更简洁的方式替换它。

标签: php html


【解决方案1】:

看看JQuery。您会发现它将彻底改变您与 javascript 的交互。如果您不确定所有 {}(){()} 的含义,请搜索 Douglas Crockford 并观看他的视频。

说了算。

<div class="buyrow left"><?PHP echo"<input class=\"changeBlue\" onmouseover=\"this.className='changeBlueoff'; document.getElementById('$ct->id').className='changeBlueoff'\" 
      onmouseout=\"this.className='changeBlue'; getElementById('$ct->id').className='changeBlue'\" 
      onclick=\"this.value='$ct->id'; this.submit()\" type=\"submit\" value=\"Trade\" name=\"buy\">";?>&nbsp;</div> 

试试

  <div class="buyrow left">
// this is a new hidden input with the buy id 
<input type=hidden name=buy id=buyinput value=<?php echo $ct->id ?> >

//onclick Submit
<?PHP echo"<input class=\"changeBlue\" onmouseover=\"this.className='changeBlueoff'; document.getElementById('$ct->id').className='changeBlueoff'\" 
      onmouseout=\"this.className='changeBlue'; getElementById('$ct->id').className='changeBlue'\" 
      onclick=\"this.submit()\" type=\"submit\" value=\"Trade\" name=\"anotherbuy\">";?>&nbsp;</div> 

阅读这段代码非常困难,我认为您应该以另一种方式执行此操作,但以上内容应该可以解决您的问题。

【讨论】:

    猜你喜欢
    • 2017-07-21
    • 2017-04-19
    • 1970-01-01
    • 1970-01-01
    • 2011-12-06
    • 2021-11-25
    • 2012-07-23
    • 2018-05-18
    • 2015-12-18
    相关资源
    最近更新 更多