【问题标题】:Input | Get the new value set by a JavaScript function into a Controller public function输入 |将 JavaScript 函数设置的新值获取到 Controller 公共函数中
【发布时间】:2019-07-27 20:52:57
【问题描述】:

我创建了一个 CRUD 来编辑现有的表行。

其中一个输入已经包含在创建行时保存的 value="19.00" :

<input type="number" step="1" title="Prix" class="form-control" name="productprice" id="productprice" value="19.00">

当用户更改选择列表的值时(例如,如果产品属性之一发生更改并影响价格),我将使用 javascript 函数覆盖我的 CRUD 中的值:

$('#form').on('change', function() {

var d1 = document.getElementById('ordersdetailproducttype_ID').value; // producttypeID
// console.log('producttype ID:', d1);
var d2 = document.getElementById('ordersdetailproductname').value; // productnameID
// console.log('product ID:', d2);
    var d3 = document.getElementById('ordersdetaildessertservingID').value; // dessertservingID
// console.log('Servings:', d3);
var pl1 = document.getElementById('ordersdetailID_portion').value; // partyloafportionID
// console.log('pl1:', pl1);
var pl2 = document.getElementById('ordersdetailpartyloafweightID').value; // partyloafweightID
// console.log('pl2:', pl2);

if (d1 == '' && d2 == '' && d3 == '' && pl1 == '' && pl2 == '') { $('#ordersdetailproductprice').val('0.00'); }
else if (d1 == 1 && d2 == 1 && d3 == 1 && pl1 == '' && pl2 == '') { $('#ordersdetailproductprice').val('19.00'); }
else if (d1 == 1 && d2 == 1 && d3 == 2 && pl1 == '' && pl2 == '') { $('#ordersdetailproductprice').val('24.00'); }
...

在这种情况下,用户会在输入中看到新值(价格),

我通过检查元素结构看不到的值:

<div class="form-group header-group-0 " id="form-group-productprice" style="display: block;">
<label class="control-label col-sm-2">Prix
        </label>

<div class="col-sm-10">
    <input type="number" step="1" title="Prix" class="form-control" name="productprice" id="productprice" value="19.00">
    <div class="text-danger"></div>
    <p class="help-block"></p>
</div>

如果我用inspector查看元素,我可以看到输入的值仍然是

value="19.00"

我需要在我的控制器中检索由我的 JavaScript 函数设置的新值,以便能够使用控制器公共函数相应地更新我的表格行列。

我第一次遇到这种问题,我不知道如何解决这个问题。将不胜感激您的专业知识。谢谢,马克

【问题讨论】:

  • 这与 PHP 或 Laravel 有什么关系?你有什么尝试进一步调试问题?

标签: javascript php laravel-5


【解决方案1】:

当您有 input 字段的默认值时,通过 val() 更改它不会影响它。

你需要使用attr(),所以不要像这样的行:

$('#ordersdetailproductprice').val('0.00');

用途:

$('#ordersdetailproductprice').attr('value', '0.00');

然后您可以轻松获取输入值以发送到您的控制器(我相信通过 AJAX):

let value = $('#ordersdetailproductprice').val();

希望对你有帮助

【讨论】:

  • 感谢感谢,这是我想解决的方法,我正在努力,因为这对我来说是新的土地,但请尽快回复您以告知结果。
  • 更改属性。值最终不是解决方案,因为没有提交值。但我通过 Ajax 调用找到了解决方案,再次感谢。
  • 恭喜!您应该自己发布解决方案并将其标记为已接受,以便我们可以关闭此线程
【解决方案2】:

JS 脚本中的 AJAX 调用解决方案:

...
else if (d1 == 4 && d2 == 27 && d3 == '' && pl1 == 2 && pl2 == 2) { $('#productprice').val('59.00'); }
else if (d1 == 4 && d2 == 27 && d3 == '' && pl1 == 3 && pl2 == 3) { $('#productprice').val('69.00'); }
else if (d1 == 4 && d2 == 27 && d3 == '' && pl1 == 4 && pl2 == 4) { $('#productprice').val('79.00'); }
else if (d1 == 4 && d2 == 27 && d3 == '' && pl1 == 4 && pl2 == 5) { $('#productprice').val('89.00'); }

var rowID = rowid;
var orderID = $('#orderID').val();
var productprice_new = $('#productprice').val();
console.log(productprice_new,rowID,orderID);

$.ajax({
type: 'post',
url: '/assets/ajax/ajaxupdate.php',
data:  {
        'rowid' : rowid,
        'orderID' : orderID,
        'productprice_new' : productprice_new,
        },
            success: function (data) {
                console.log('worked!');
            },
            error: function (data) {
                console.log('Error:', data);
            }
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-07
    • 1970-01-01
    • 2019-12-30
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多