如何禁用1个按钮,却可以使其他按钮启用



$order_status接受时,只有包含 Accept 的按钮被禁用。如果$order_status派遣发送了禁用按钮。如果$order_status取消 禁用按钮是取消的。我是新来的php,我不安静地理解它。

禁用包含文本的按钮接受,即使$order_status的值为接受 dispatched 取消>。为什么总是被禁用?

以下是代码:

<button type="submit" name="submitAccept" class="btn btn-primary" 
    <?php if ($order_status = 'Accepted'){?> disabled <?php } ?>">Accept </button> 
<button type="submit" name="submitSent" class="btn btn-primary" >Sent</button> 
<button type="submit" name="submitCancel" class="btn btn-danger" 
    onclick="if(!confirm('Are you sure you want to cancel order?')){return false;}">Cancel</button>

这是一个很好的习惯,可以将您的担忧分开。首先从您的HTML开始,并尽可能少:

<button
  type="submit"
  name="submitAccept"
  class="btn btn-primary"
  <?php if ($submitAcceptDisabled): ?> disabled <?php endif ?>">
  Accept
</button> 

其他按钮也是如此,只需添加一个标志并保持视图简单即可。对于您的PHP逻辑,让我们调查您的场景:

  1. 当订单_status接受时,只有接收按钮被禁用。

    $submitAcceptDisabled = $order_status === 'Accepted';
    
  2. ,如果派遣订单_status发送了禁用按钮。

    $submitSentDisabled = $order_status === 'Dispatched';
    
  3. ,如果取消了order_status,则禁用按钮是取消。

    $submitCancelDisabled = $order_status === 'Cancelled';
    

在您的一段代码中,您将值分配给$order_status,而不是检查当前值是否等于某些内容:

if ($order_status = 'Accepted')

这将始终将Accepted的值设置为$order_status变量。

您可以考虑的另一个改进是分开JavaScript:

const submitCancel = document.querySelector('button[name="submitCancel"]');
submitCancel.addEventListener('click', () => {
  if(!confirm('Are you sure you want to cancel order?')) {
    return false;
  }
});

您条件语句中的孤独符号不是"比较操作员",它是"分配运算符"。

如果您写:

$order_status='Dispatched';
if($order_status='Accepted'){  // this sets the value
    echo "order_status=$order_status";  // this displays the new value
}else{
    echo "order_status=$order_status";  // this doesn't get a chance to happen
}

您会看到:

order_status=Accepted

这是因为if语句的行为就像声明,而是比较。为了使您的if语句比较该变量与值,您可以使用 ==(" type juggling"之后的宽松比较,又称为true)或 ===(严格的比较,又称"同一")。

>

对于您的任务,您可以使用此片段,该片段在单个PHP代码块中使用内联条件。

代码:(演示)

echo "<button type="submit" name="submitAccept" class="btn btn-primary"",($order_status=='Accepted'?' disabled':''),">Accept<button>";
echo "n";
echo "<button type="submit" name="submitSend" class="btn btn-primary"",($order_status=='Dispatched'?' disabled':''),">Send<button>";
echo "n";
echo "<button type="submit" name="submitCancel" class="btn btn-danger"",($order_status=='Cancelled'?' disabled':'')," onclick="if(!confirm('Are you sure you want to cancel order?')){return false;}">Cancel<button>";

无烦恼的HTML输出:

<button type="submit" name="submitAccept" class="btn btn-primary" disabled>Accept<button>
<button type="submit" name="submitSend" class="btn btn-primary">Send<button>
<button type="submit" name="submitCancel" class="btn btn-danger" onclick="if(!confirm('Are you sure you want to cancel order?')){return false;}">Cancel<button>

额外的笔记:

  • 您在代码中的?>之后有一个额外的"?>">Accept </button>
  • 我将Sent更改为我的摘要中的Send以改进英语

最新更新