【发布时间】:2018-03-25 14:13:19
【问题描述】:
我想制作一个按钮来添加新的项目行:
这是 create.blade.php 中的 HTML
<div class="createOrderForm" id="orderMenuItems">
<div class="orderItem">
<label> Item : </label>
<select name="item[]" required>
<option value="">Menu Items</option>
@foreach ($menuItems as $item)
<option value="{{$item->id}}">{{$item->name}}</option>
@endforeach
</select>
<label>Quantity :</label>
<input type="text" name="quantity[]" value="" required>
</div>
</div>
这是包含的 create.js:
$(document).ready(function () {
console.log("Welcome To create order Page");
var addItem = $('#addItem');
var orderMenuItems = $('#orderMenuItems');
$(addItem).click(function(e){
var newItem = '<div class="orderItem">';
newItem += '<label> Item : </label>';
newItem += '<select name="orderItem[]">';
newItem += '<option value="">Menu Items</option>';
newItem += "@foreach ($menuItems as $item)";
var itemID = "{!! $item->id !!}";
newItem += '<option value="'+ itemID +'">'+ itemID +'</option>';
newItem += "@endforeach";
newItem += '</select>';
newItem += '<label>Quantity :</label>';
newItem += '<input type="text" name="quantity[]" value="" required>';
newItem += '</div>';
$(orderMenuItems).append(newItem);
});
});
按钮工作并添加新行,但新行中的菜单项有问题:
我认为问题出在这里:
newItem += "@foreach ($menuItems as $item)";
var itemID = "{!! $item->id !!}";
newItem += '<option value="'+ itemID +'">'+ itemID +'</option>';
newItem += "@endforeach";
我尝试使用:
@foreach ($menuItems as $item)
....
@endforeach
而不是:
newItem += "@foreach ($menuItems as $item)";
....
newItem += "@endforeach";
但它不起作用。
我该如何解决?
【问题讨论】:
-
我认为这是因为你混合了 php 和 javascript 所以 {!! $item->id !!} 没有得到 php 的回显,而是设置为字符串。
-
那么,我应该怎么做才能让它工作呢? @Mr.Greenwoodz
-
类似 var itemID = 'id ?>;';
-
我试过了,但还是有同样的问题.. @Mr.Greenwoodz
-
需要在JS中生成select,并在js中追加。不要使用刀片,它不会被编译。您将需要 ajax 来获得您的价值。
标签: javascript laravel loops laravel-blade