Php WHMCS购物车输入标记的onclick属性内的If条件
我正在用新的信息编辑这篇文章,以澄清我的问题 我有以下代码。这是WHMCS使用的smarty语言 {if$errormessage}{$LANG.clientareaerrors}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
- {$errormessage}
<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();" />