Laravel 输入字段 number_format()

Laravel input field number_format()

我正在与我的用户争论输入字段中的大数字以便更好地阅读。有没有一种简单的方法可以在输入字段中格式化数字,例如 1'450'000.00 以及如何将值保存为数字?

此刻我是这样处理的:

<input id="wbw" type="numeric" class="form-control @error('wbw') is-invalid @enderror" name="wbw" value="{{number_format( old('wbw', $bw->wbw), 2, '.', '')}}" autofocus>

但我喜欢这样的东西 number_format:

value="{{number_format( old('wbw', $bw->wbw), 2, '.', '´')}}"

但是我在保存时遇到了问题,因为它不再是数字了。我必须在控制器的 save-function 中处理它还是在 blade 中有一种优雅的方式?

感谢帮助!

当您使用 number_format 函数时,这将产生一个字符串。因此,要保存此字符串,您需要将数据库列类型更改为 varchar 或任何其他字符串类型。

由于数字的格式只需要在客户端(在浏览器中显示给用户),那么最好只使用 javascript 库而不是服务器端 php.

示例AutoNumeric.js:

window.myinput = new AutoNumeric('#myinput', 1450000);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/autonumeric@4.1.0"></script>
<input type="text" id="myinput">
<button onclick="alert(window.myinput.rawValue)">see value</button>

示例cleave.js

window.cleave = new Cleave('.input-element', {
    numeral: true,
    numeralThousandsGroupStyle: 'thousand'
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/cleave.js/1.6.0/cleave.min.js"></script>
<input type="text" class="input-element" value="1450000">
<button onclick="alert(window.cleave.getRawValue())">see value</button>

但您还必须在提交之前添加 js 事件处理程序,以便表单中的 POST-ed 值是输入的原始值而不是格式化值

免责声明:我与上述图书馆的作者无关