我正在创建CakePHP 3.0表单,并且我有几个输入字段(Form-> input),用户将在其中输入美国货币的值。我想在输入框的左侧添加一个$符号。从我的研究来看,似乎CakePHP的Form本身并不支持这一点,所以我相信CSS解决方案是理想的。数据库中的相应字段是浮点数。
答案 0 :(得分:0)
:before和:after应用于容器内,这意味着您可以将它用于带有结束标记的元素。
Source
基本上,这意味着您不能在输入之前使用,因为它会将内容插入到输入中
你可以使用CSS的:before
伪元素来完成它,但是你必须将输入包装在一个元素中,或者在它之前放置一个元素:
.inputcon:before{
content:'$'
}
或者,您可以使用jQuery:
$("input").wrap("<span class='inputcon'>");
或者使用Vanilla JS:
var inputs = document.getElementsByTagName("input");
for(var i =0;i<inputs.length;i++){
var wrapper = document.createElement("span");
wrapper.classList.add("inputcon")
inputs[i].parentNode.insertBefore(wrapper,inputs[i]);
wrapper.appendChild(inputs[i])
}
答案 1 :(得分:0)
听起来您想要覆盖输入模板以在输入字段之前包含$
。默认输入模板为<input type="{{type}}" name="{{name}}"{{attrs}}>
,因此它将更改为$ <input type="{{type}}" name="{{name}}"{{attrs}}>
。
http://book.cakephp.org/3.0/en/views/helpers/form.html#customizing-the-templates-formhelper-uses
你可以覆盖整个表单(可能不是你想要的),或者只是一个输入。本书中的大多数示例都向您展示了如何覆盖整个表单,但您可以仅覆盖该输入字段。 http://api.cakephp.org/3.0/class-Cake.View.Helper.FormHelper.html#_input
将字段本身限制为仅适用于货币的数字/符号是javascript / html5问题,与蛋糕分开。如果这是您想要的,您还应该使用cake验证服务器端。
此外,有点偏离主题,货币字段不应存储为数据库中的浮点数。它们应该存储为一些固定的精度类型(例如mysql中的十进制类型)。