无法在网页的下拉框中检索项目的值

时间:2014-08-18 20:24:48

标签: javascript jquery html sql knockout.js

我正在使用html5和Knockout Js在网页上工作并尝试将值插入SQL表中但由于某些原因我无法获得在下拉框中选择的项目的ID

例如,我有以下SQL表

ProductOrder Product
1             VS
2             Netg
5             CCast        
5             Firefox
6             App

现在使用Html页面我有一个textbox我将在其中输入product namedropdown box,其中包含同一个表中的产品列表。当输入{{1}时从product name框中选择一个product,它应该dropdown product name textbox product order product 1}}框。

我正在使用以下脚本

HTML

dropdown

淘汰JS

    <td colspan="2"><input type="text" id="txbInput" placeholder="Product Name" data-bind="value: Product"/> 
    <td >
         <select data-bind="options: $root.datainput, optionsText: 'ProductName', optionsValue: 'ProductOrder',value: selectedPOrder,  optionsCaption: 'Product'">
         </select></td>
<td>
     <input type="button", onclick="ClearFields();" class="btn btn-success" data-bind="  click: add, visible: !loading()", value="Add Product"/>
</td>

出于某些原因,当我点击 self.selectedPOrder = ko.observable(); var porder = this.selectedPOrder(); self.add = function (product) { var payload = { ProductName: this.Product(), ProductOrder: porder }; $.ajax({ url: '/odata/Products', type: 'POST', data: JSON.stringify(payload), contentType: 'application/json', dataType: 'json' }); } 时,它会插入我在文本框中输入的Add名称,但它会在product中插入0而不管productorder我在product中选择。即使脚本dropdown box也无效。

self.selectedPOrder()

我可以知道我错在哪里以及为什么插入零

2 个答案:

答案 0 :(得分:0)

您可能需要使用$root.selectedPOrder

<select data-bind=" options: $root.datainput, 
                    optionsText: 'ProductName', 
                    optionsValue: 'ProductOrder',
                    value: $root.selectedPOrder,  
                    optionsCaption: 'Product'">
</select>  

答案 1 :(得分:-1)

像这样访问self.add函数中的选定值。

   self.add = function (product) {
    var payload = { ProductName: this.Product(), ProductOrder: self.selectedPOrder() };
    $.ajax({
        url: '/odata/Products',
        type: 'POST',
        data: JSON.stringify(payload),
        contentType: 'application/json',
        dataType: 'json'

    });

}