Php WHMCS购物车输入标记的onclick属性内的If条件

Php WHMCS购物车输入标记的onclick属性内的If条件,php,input,onclick,smarty,whmcs,Php,Input,Onclick,Smarty,Whmcs,我正在用新的信息编辑这篇文章,以澄清我的问题 我有以下代码。这是WHMCS使用的smarty语言 {if$errormessage}{$LANG.clientareaerrors}{$errormessage}{elseif$promotioncode&$rawdiscount eq“0.00”}{$LANG.promoappliedbutnodiscount}{/if} 重要的部分是“$promotioncode&&$rawdiscount eq“0.00” 因此,在我的输入框中,我想运行a

我正在用新的信息编辑这篇文章,以澄清我的问题

我有以下代码。这是WHMCS使用的smarty语言

{if$errormessage}{$LANG.clientareaerrors}
    {$errormessage}
{elseif$promotioncode&$rawdiscount eq“0.00”}{$LANG.promoappliedbutnodiscount}{/if}

重要的部分是“$promotioncode&&$rawdiscount eq“0.00”

因此,在我的输入框中,我想运行applypromo,如果条件无效,它将显示一个警报(“优惠券对该产品无效”)

我想做的是检查促销代码是否与所选产品关联,如果不是,它会显示一条消息。我检查了一些其他购物车,它们会这样做,它有一段类似于以下内容的代码:

这用于我们的smarty语言(WHMCS)程序。如果您有任何建议,请告诉我。


<span onclick="if(condition){do_foo();}else{do_bar();}return false;">
    click me
</span>
点击我

点击我

为什么不将
if
放在事件处理程序中,并从PHP向其传递一个参数(如您在注释中所要求的)


为什么不将
if
放在事件处理程序中,并从PHP向其传递一个参数(如您在注释中所要求的那样)

尝试:

试试:


但是,在javascript文件的代码中侦听事件总是比将其作为onclick属性包含更好的做法


但是,在javascript文件的代码中侦听事件总是比将其作为onclick属性包含更好的做法。

因此,您的问题实际上是关于smarty模板语言

我相信您可以使用smarty三元语法:

<input type="submit" value="Apply" onclick="{($promocode=="DEMO")?'function1()':'function2()'}" /> 

那么你的问题其实是关于smarty模板语言的

我相信您可以使用smarty三元语法:

<input type="submit" value="Apply" onclick="{($promocode=="DEMO")?'function1()':'function2()'}" /> 


如果您想将一些数据从后端绑定到元素中,并在前端使用它

您可以使用data-*属性并使用此.dataset.*获取它

这是一个您可以使用的小演示


如果您想将一些数据从后端绑定到元素中,并在前端使用它

您可以使用data-*属性并使用此.dataset.*获取它



这里有一个小演示,您可以使用它,而不是放在处理程序本身内部,因为条件来自PHP变量,而不是JS变量。只是不要忘记在(link)的onclick事件中添加
return false
。否则您的浏览器也会访问该链接。@DarkSide谢谢!多年来我很少做前端工作,但您是对的!不要将其放入处理程序本身,因为条件来自PHP变量,而不是JS变量。只是不要忘了在(link)的onclick事件中添加
return false
。否则你的浏览器也会去访问该链接。@DarkSide谢谢!多年来我很少做前端工作,但你是对的!只有当条件是JS变量而不是PHP变量时,这才有效。啊,那就更简单了。只需根据你的PHP条件从PHP输出你想要的内容。哪里有问题?我不明白:)p问题是OP没有很多用PHP/JS编写代码的经验。现在我明白了:)问题很简单,用PHP进行了10年以上的实验。抱歉:)看起来不错。。没有意识到你也给出了答案。:)这只在条件是JS变量而不是PHP变量的情况下起作用。啊,那就更简单了。只需从PHP输出你想要的问题是OP没有很多用PHP/JS编写代码的经验。现在我明白了:)问题是对于>10年的PHP经验来说很简单。抱歉:)看起来不错..没有意识到你也给出了答案:)你在第二个源代码示例中有错误。请参阅“onclick中的符号在第二个源代码示例中有错误。看见“onclickBetter中的符号不使用像@DarkSide这样的短PHP标签-事实上,PHP echo标记又恢复了风格。@adeneo DarkSide建议使用echo标记。原因是,我想并非所有服务器上都启用短标签。然而,我的猜测是,看看OP的代码,OP并不真正关心编写可移植代码。我注意到,
它是一个短标记,短标记不会被重新引用,除了echo短标记,正如前面提到的,它已经恢复了风格。最好不要使用像@DarkSide这样的短PHP标签-实际上,PHP echo标记重新流行起来。@adeneo Darkside建议使用echo标记。原因是,我想并非所有服务器上都启用短标签。然而,我的猜测是,看看OP的代码,OP并不真正关心编写可移植代码。我注意到,
它是一个短标记,短标记不会被重新引用,除了echo短标记,正如前面提到的,它已经恢复了风格。
onclick = "function() {
if(condition) { 
//do something 
}
else if(condition) { 
//do something else
}
}"
<input type="submit" value="Apply" onclick="{($promocode=="DEMO")?'function1()':'function2()'}" /> 
<input type="submit" value="Apply" data-prom="$promocode" 
onclick=if{ this.dataset.prom =="DEMO"}"function1();{else}function2();" />