我尝试将一些函数移到文件中以获得更好的订单。如果功能位于laravel刀片内部,则效果很好。但是如果我将它移动到文件editOp.js中则会出现以下错误:ReferenceError:无法找到变量:editMaterial
通话功能:
<td class="text-right">
<a onclick="editMaterial('{{$opMaterial->id}}')" class="btn btn-link text-info" ><i class="fa fa-pencil " aria-hidden="true"> </i> </a>
<a onclick="deleteMaterialItem('{{$opMaterial->id}}')" class="btn btn-link text-danger" ><i class="fa fa-times " aria-hidden="true"> </i> </a>
</td>
包括js:
@endsection
@section('footer_scripts')
<script>
var opId = '{{$op->id}}'
</script>
<script src="{{ asset('/assets/plugins/x-editable/dist/bootstrap3-editable/js/bootstrap-editable.js') }}" ></script>
<script src="/assets/plugins/bootstrap-select/dist/js/bootstrap-select.min.js"></script>
<script src="{{ asset('/js/opMaterial.js') }}"></script>
<script src="{{ asset('/js/editOp.js') }}" ></script>
editOp.js:
$(document).ready(function() {
function editMaterial(id) {
$('#editMaterial-' + id).hide();
$('#saveMaterial-' + id).show();
$('#materialRow-' + id).hide();
$('#materialFormRow-' + id).show();
$("#materialFormRow-" + id + " input:text").first().focus();
}
function saveMaterial(id) {
$('#editMaterial-' + id).show();
$('#saveMaterial-' + id).hide();
$('#materialRow-' + id).show();
$('#materialFormRow-' + id).hide();
saveMaterialFormRow(id);
}
function cancelMaterial(id) {
$('#editMaterial-' + id).show();
$('#saveMaterial-' + id).hide();
$('#materialRow-' + id).show();
$('#materialFormRow-' + id).hide();
}
})
不幸的是,谷歌没有帮助......
答案 0 :(得分:0)
在
<a onclick="editMaterial('{{$opMaterial->id}}')" class="btn btn-link text-info" ><i class="fa fa-pencil " aria-hidden="true"> </i> </a>
<a onclick="deleteMaterialItem('{{$opMaterial->id}}')" class="btn btn-link text-danger" ><i class="fa fa-times " aria-hidden="true"> </i> </a>
onclick
属性需要全局函数。但是您的函数是在$(document).ready(function() {
函数中定义的,因此它们不是全局的。
解决方案:删除$(document).ready(function() {
部分,让您的功能全局化。
替代方案,可能更好的解决方案:不要使用onclick
并使用$('selector').click(function (){})
将函数绑定到click事件。这可以(应该)在$(document).ready(function() {
函数内完成。