jQuery需要从表单输入框的值设置变量的值

时间:2009-03-03 02:39:25

标签: jquery ajax forms

我希望获取表单输入的值。

我认为我的问题出在这一行:

    var vid = $(this).next(".pid").val();

我需要将名为'pid'的输入框的值发送到php页面,但页面上有几个表单,所有表单都有名为'pid'的输入框。当我只有:

next(".pid").val();

发送的值来自页面上的另一个表单。

修改 我真正想做的就是将“数据”设置为表单中所有数据的数组。因此,如果有更好的方法将“formdata”变量设置为表单的id,那也可以。

下面是jQuery函数:

$(".varSel").live("change", function(){
    var vid = $(this).next(".pid").val();
    var formdata = $('form#addToCart'+ vid).serialize();
    $.ajax({
        type: "POST",
        url: "library/varPrice.php",
        data: formdata,
        success: function(html){
        $('.price').html(html);
      }
    });
});

修改

以下是表格:

<form name='addToCart' id='addToCart99' action='cart.php?action=add' method='post'>
    <ul class='vars' id='varlist_p99'>
        <li>
        <label for="color">color</label> 
        <select id="color" name="color" class='varSel'>
            <option>blue</option>
            <option>green</option>
            <option>red</option>
        </select>
        </li>

        <li>
        <label for="size">size</label> 
        <select id="size" name="size" class='varSel'>
            <option>large</option>
            <option>small</option>
        </select>
        </li>

        <li>
            <div class='price'>
                $$
            </div>
        </li>

        <li>
                <input type='hidden' value='99' name='pid'> 
                <input type='submit' class='buynow' value=''>
        </li>
    </ul>
</form>

2 个答案:

答案 0 :(得分:3)

替换它:

var vid = $(this).next(".pid").val();
var formdata = $('form#addToCart'+ vid).serialize();

有了这个:

var formdata = $(this).parents('form').serialize();

经过测试和工作。

答案 1 :(得分:0)

你为什么使用next()?

您应该尝试在上下文中搜索:

$(".pid", this) // if "this" is the current form

无论如何,我建议每个输入都有唯一的id属性。所以你不必猜测将处理哪个元素。