我有一个提示部分,可以从客户"自定义"输入。当客户输入一个值时,我想把它传递给PHP来更新订单。
我没有成功,我认为我处理这个问题的方式不对,因为我无法让它发挥作用。在不使用AJAX的情况下,我可以使用哪些选项?
提示部分:
<?= ($receipt['tip'] > 0 ?
'<tr id="tip-area"><th>Tip</th>
<td><textarea id="tip" name="update_tip" readonly>'. $receipt['tip'].'</textarea></td>
</tr>'
: '') ?>
我的表格有不同的提示选项:
<form method="post">
<tr>
<button title="20% Tip" type="submit" name="update_tip" id="update_tip" class="tip-button"
value="<?= ($_SESSION['order']['quote']['subtotal'] * 0.2); ?>">
<small>20%<br><?= number_format(($_SESSION['order']['quote']['subtotal'] * 0.2), 2) ?></small>
</button>
<button title="Edit Tip" type="button" name="update_tip" id="custom-tip" class="tip-button">
<small>Edit<br>Tip<br></small>
</button>
<button title="Save Tip" type="submit" id="save_tip" class="hidden">
<small>Save<br>Tip</small>
</button>
</tr>
</form>
我的jQuery:
$('#custom-tip').click(function(){
$('#tip').removeAttr('readonly').focus();
$('.tip-button').addClass("hidden");
$('#save_tip').removeClass("hidden");
});
$('#save_tip').click(function (){
var tip = $('textarea#tip').val();
$('<input type="hidden" name="update_tip" value="' + tip + '">').submit();
});
$('#tip').focus(function(){
this.value = '';
});
当他们按下"编辑提示"时,readonly
属性将被删除,该区域将成为焦点并清除值。
然后用户应该输入一个值并点击Save
。
然后我试图检索他们输入的值。
我想这就是你想要的:
$("form").submit(function() {
$("<input>", {
type: "hidden",
name: "update_tip",
value: $("#tip").val()
}).appendTo($(this));
});
这将使用文本区域中的值创建隐藏输入,并在提交表单之前将其附加到当前表单。
您需要在处理数据的同一页面上有PHP代码(因为您的表单没有指定操作)。使用输入的"name"属性可以指定要在$_POST超级全局中访问的值的键。例如,如果我发布了一个带有以下代码的表单:
<form method='POST'>
<input type='hidden' value='hello' name='world'>
<input type='submit' value='submit'>
</form>
然后在PHP中,我可以使用以下代码访问名为"world"的元素的值:
$_POST['world']
使用此语法从表单中获取数据并将其持久化/更新。