动态改变形式动作?

时间:2014-01-22 13:17:26

标签: javascript php html

我认为这个问题已被问过几次,我也确实在Google上找到了一些问题。

但是我并不想改变整个表单行为。我只需要部分改变它。

这就是我的意思:

我有以下表格:

    <form action="order.php?add=<?php echo $product_name; ?>&amp;price=<?php echo $price; ?>&amp;qty=1" method="post">
        <input type="text" name="qty" id="qty" class="qty"  size="12"   />
        <input type="submit" class="button2" name="buttonadd" id="button" value="Add to cart" />
   </form>

我需要做的是更改表单操作中的qty=1,使其反映<input type="text" name="qty" id="qty" class="qty" size="12" />值!

我怎样才能做到这一点?

4 个答案:

答案 0 :(得分:5)

将Form方法设置为'get'(现在是POST的东西)

<form action="order.php" method="get">
    <input type="hidden" name="add" value="<?php echo $product_name ?>" />
    <input type="hidden" name="price" value="<?php echo $price ?>" />
    <input type="text" name="qty" id="qty" class="qty"  size="12"   />
    <input type="submit" class="button2" name="buttonadd" id="button" value="Add to cart" />
</form>

你有它! :)

(我还删除了其他网址参数并将它们放入隐藏的输入中。在我看来,这是一种更清晰的方法。)

答案 1 :(得分:1)

在普通的JS中你可以做到:

window.onload = function() {
    document.getElementById('qty').addEventListener('input', function(event) {
        var action = this.form.getAttribute('action','');
        action = action.replace(/qty=\d+/, 'qty=' + this.value);
        this.form.setAttribute('action',action);
    });
}

Fiddle

答案 2 :(得分:0)

OP请求具体内容。

jsFiddle

$('#qty').change( function() {
       var value = $(this).val();
       $('#form').attr('action', 'order.php?qty=' + value);
    alert($('#form').attr('action'));
});

<form id="form" action="order.php?qty=1" method="post">
    <input type="text" name="qty" id="qty" class="qty"  size="12"   />
    <input type="submit" class="button2" name="buttonadd" id="button" value="Add to cart" /></form>

我添加了id="form"

我不同意这种方法,你应该使用POST,但是OP要求它;

  

伙计们,这不会被整合到任何付款方式中。一切都是内部的..所以请回答实际的问题。

我已经编辑了表单操作,因此我们可以在JsFiddle上进行演示。无论如何,请添加PHP:)

答案 3 :(得分:0)

这是另一种完美运作的方式DEMO

 $("#qty").keyup(function (){
   var first=$("form").attr("action").substring(($("form").attr("action").indexOf("qty")),0)
   $("form").attr("action",first+"qty="+$(this).val());
   console.log($("form").attr("action"))
 });