PrestaShop插件按钮语言强制问题:移动端文本自动变更为Submit
PrestaShop插件按钮文本被替换的解决方法
问题原因
你使用<input type="submit">的value属性设置按钮文本,部分移动端浏览器、PrestaShop主题的JS逻辑或国际化插件可能会自动替换这个值,导致按钮显示成默认的“Submit”。
解决方法
1. 改用<button>标签(最推荐)
<button>标签的文本直接写在标签内部,不受value属性限制,能避免被轻易替换:
<div> <button style="border: none; border-radius: 0; background-color: #9dc233;" type="submit" class="btn btn-primary" name="tracking-btn"> Enviar </button> </div>
2. 强制禁用浏览器自动替换
给按钮添加autocomplete="off"属性,阻止浏览器默认的表单元素文本替换:
<div> <input style="border: none; border-radius:0; background-color: #9dc233;" value="Enviar" type="Submit" class="btn btn-primary" name="tracking-btn" autocomplete="off"> </div>
3. 排查并覆盖动态修改的JS
检查主题或其他插件的JavaScript代码,看是否有监听表单事件并修改按钮文本的逻辑。如果存在,可以在插件中添加JS代码强制设置文本:
// 页面加载完成后执行 document.addEventListener('DOMContentLoaded', function() { const trackingBtn = document.querySelector('input[name="tracking-btn"]'); if (trackingBtn) { trackingBtn.value = "Enviar"; } });
4. 适配PrestaShop语言系统(多语言场景)
如果需要支持多语言,使用PrestaShop的语言变量输出文本,更符合框架规范:
- 在插件的语言文件(如
translations/es/es.php)中添加变量:
$_LANG['MY_TRACKING_BTN_TEXT'] = 'Enviar';
- 在模板中调用该变量:
<div> <input style="border: none; border-radius:0; background-color: #9dc233;" value="{$smarty.const._LANG.MY_TRACKING_BTN_TEXT}" type="Submit" class="btn btn-primary" name="tracking-btn"> </div>
内容的提问来源于stack exchange,提问作者Motias
相关产品推荐
相关产品推荐

