如何获取选择框的文本和值并将其存储到数据库中?

问题描述:

我试图将选择框的文本和值存储到我的数据库中。我可以通过从选择框名称本身请求它来正确存储值,但是我在存储文本时遇到了麻烦。我有2个表,即Item和ItemOrder。如何获取选择框的文本和值并将其存储到数据库中?

项目表

ID |命名

ItemOrder表

ID | item_id(项目表中的fk)| ITEM_NAME

HTML

<select name="item" class="form-control select2" id ="item"> 
    <option value="0" selected="true" disabled="true">Select Item</option> 
    @foreach($items as $key => $i) 
     <option value="{!!$key!!}">{!!$i!!}</option> 
    @endforeach 
</select> 

ItemController

public function itemList() 
{ 
    $items = Item::lists('name', 'id'); 
    return view('employee.itemList', compact('items')); 
} 
public function storeItem(Request $request){ 
    $info = array('item_name'=>$i, 
     'item_id'=>$request['item'], 
    DB::table('itemOrder')->insert($info); 
    return redirect()->route('dashboard'); 
} 

路线

Route::get('itemList', ['as' => 'itemList', 
     'uses' => '[email protected]']); 
Route::post('storeItem', ['as' => 'storeItem', 
     'uses' => '[email protected]']); 

JS

$('select[name="item"]').on('change', function() { 
var e = document.getElementById("item"); 
var itemText = e.options[e.selectedIndex].text; 
console.log(itemText); 
}); 

我可以将item_id值存储在我的数据库中,因为我在此期间将item_name设置为空。我试图通过JavaScript获取文本,我可以用console.log显示它。任何人都可以帮我存储选定的文本?或者有没有办法通过javascript或jquery获取文本?

+0

_“还是有办法让文本通过JavaScript或jQuery的” _你已经检索通过JavaScript的文本,即'itemText'。如果您需要保存它,只需将它随同您用来将其他信息发送到服务器的任何方法一起发送。 –

+0

感谢您的回复,我对javascript很陌生,所以我不知道如何发送方法中的文本。我没有检索值的问题,因为我只需要请求选择框的名称,它将存储该值。但是文本与选择框的值相同,所以请求它只会让我获得值而不是文本,但我很担心如何获取文本。 –

+0

_“我很迷茫,如何获取文本”_你已经在'itemText'中有文本,正如你所说的“我可以用console.log显示它”_。所以,无论你需要做什么,都可以做。你真的需要用它做什么?你所说的只是_“存储它”_存储它在哪里?在JavaScript的其他部分可以使用的变量中?将它传递给其他函数? –

你有没有试过用

"<option value=" 

持有每个选项的文本?这样,您可以检索选定的选项文本,而不是一些数字代码。

+0

感谢您的回应,选项值是$ key,它是项目的item_id,这就是我获取item_id以传入数据库的位置。 $ m是项目的文本,但我不知道如何获取该值以存储到我的数据库中。 –

+0

能否打印$项目阵列。您可以写这个@foreach($的项目,如$密钥=> $ⅰ) ”> {!! $ I !! } @endforeach – Jinesh

按照我的代码。

$(document).ready(function() 
{ 
    $('select[name="item"]').on('change', function() 
    { 
    alert('Value change to ' +$(this).attr('value')+$(this).text()); 
    }); 
}); 
+0

谢谢你的回应,我想你的代码,它提醒“的值更改为未定义”和它下面列出的所有的项目名称。 –

+0

因为你的期权价值未创建就是为什么它显示未定义 – Jinesh

+0

我不知道,如果我跟着你,但不是我的选择框从我的foreach变量$项目的价值?或者我做错了吗? –