我试图创建一个动态输入字段,当一个值不再与DB中存储的值匹配时发出警告。我想使用Laravel的本地化@lang('messages.error')
或{{ __('messages.error') }}
来为我的应用程序选择的语言提供此消息。
我的问题很简单,你如何在jQuery中使用它?我发现答案对我目前的经验水平来说很难,所以我想知道这里是否有人知道答案。
部分代码:
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<title></title>
<form action="" method="post">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h4>@lang('form.kvk')</h4>
</div>
<div class="ibox-content">
<div class="form-group{{ $errors->has('kvk') ? ' has-error' : '' }}">
<label for="kvk">@lang('form.kvk')<span class="redFont">*</span></label>
<input type="text" class="form-control" name="kvk" id="kvk" value="{{ ( $errors->has('kvk') ? old('kvk') : ( $debtor != NULL ? $debtor->kvk : old('kvk') ) ) }}">
</div>
</div>
{{-- Remains empty if no error --}}
<div id="noMatchKvk"></div>
</div>
</form>
<script>
/* added after answer
var kvk = '{{ __("add/customer/messages.noMatchKvk") }}';
*/
$('#kvk').keyup().on('change', function() {
// If the value is no longer equal to the DB
if ( $('#kvk').val() != '{{ $debtor->kvk }}' ) {
$('#noMatchKvk').html('<span class="help-block"><strong>' + kvk + '</strong></span>');
}
// If the value remains the same
if ( $('#kvk').val() == '{{ $debtor->kvk }}' ) {
$('#noMatchKvk').html('');
}
});
</script>
PS。我四处搜寻,但找不到答案。但是,我可能会问错误的问题。
先感谢您! :)
编辑+解决方案
我没有提到消息是在en目录中的另一个文件夹中。它失败的原因是因为我一直提到带点(。)的路线,当我应该做斜线(/)时。我已经编辑了我的问题。
猜猜这是一个菜鸟的错误,谢谢所有回复的人!谢谢@Theodoros Alexopoulos的回答
<script type="text/javascript">
var something = @json( __('file.variable') );
</script>
该脚本应位于您的刀片内
然后根据需要使用变量
我认为你必须在JS单引号内保持@lang
或{{ }}
调用:
$('#noMatchKvk').html('<span class="help-block"><strong>{{ __("messages.noMatchKvk") }}</strong></span>');
那,或者您可以将{{ __("messages.noMatchKvk") }}
的值设置为变量并直接在您的代码中使用它:
var message = "{{ __('messages.noMatchKvK') }}";
$('#noMatchKvk').html('<span class="help-block"><strong>' + message + '</strong></span>');
第二种方法使它更具可读性。此外,请确保此<script>
在.blade.php
文件中(它看起来像是,但只是需要注意的事项;你不能在直接的@
文件中使用像{{ }}
或.js
这样的刀片指令)
在.js文件中使用此脚本内部标记,然后您可以在脚本标记内或.js中使用变量
<script>
var v1 = '{{ @lang('file.value') }}';
$('#kvk').keyup().on('change', function() {
// If the value is no longer equal to the DB
if ( $('#kvk').val() != '{{ $debtor->kvk }}' ) {
$('#noMatchKvk').html('<span class="help-block"><strong>' + v1 + '</strong></span>');
}
// If the value remains the same
if ( $('#kvk').val() == '{{ $debtor->kvk }}' ) {
$('#noMatchKvk').html('');
}
});