1

这不应该那么难。谢谢你的帮助。

我正在尝试通过按钮操作获取父表单的 id ( form:eq# )。

因此,当用户单击按钮时,我需要能够将表​​单的选择器 (eq) 添加到按钮的操作中。

这是按钮功能的一部分,它可以工作:

$('form:eq('+formVal+') input[name='+fieldName+']').val(currentVal + 1);

如果

formVal = 一个数字。

该数字需要是表单的选择器 ID。您使用,我的页面上有多个表单,都使用相同的 jquery 脚本,并且我试图确保当您单击表单中的按钮时,该操作仅适用于一个表单,而不是页面上的所有表单。

form:eq0 触发页面上的第一个表单。form:eq1 触发页面上的第二个表单,以此类推。

我需要使这个动态。

我一直在尝试以下代码: formVal=$(this).parent('form').attr('id');

...获取作为(父)表单的数字选择器编号的formVal 。

我该怎么做?谢谢你的帮助。完整的脚本在这里:

jQuery(document).ready(function(){
    // This button will increment the value
    $('.qtyplus').click(function(e){
        // Stop acting like a button
        e.preventDefault();
        // Get the field name
        fieldName = $(this).attr('field');
        // Get the form name
        formVal=$(this).parents("form").find('id');
        // Get its current value
        var currentVal = parseInt($('form:eq('+formVal+') input[name='+fieldName+']').val());
        // If is not undefined
        if (!isNaN(currentVal)) {
            // Increment
            $('form:eq('+formVal+') input[name='+fieldName+']').val(currentVal + 1);
        } else {
            // Otherwise put a 0 there
            $('form:eq('+formVal+') input[name='+fieldName+']').form.id.val(0);
        }
    });
    // This button will decrement the value till 0
    $(".qtyminus").click(function(e) {
        // Stop acting like a button
        e.preventDefault();
        // Get the field name
        fieldName = $(this).attr('field');
        // Get its current value
        var currentVal = parseInt($('input[name='+fieldName+']').val());
        // If it isn't undefined or its greater than 0
        if (!isNaN(currentVal) && currentVal > 0) {
            // Decrement one
            $('input[name='+fieldName+']').val(currentVal - 1);
        } else {
            // Otherwise put a 0 there
            $('input[name='+fieldName+']').val(0);
        }
    });
});
4

2 回答 2

0

您可以使用它closest来查找按钮所在的表单,this.form也可以根据它是什么类型的元素来工作。

$('.qtyplus').click(function(e){
    // Stop acting like a button
    e.preventDefault();
    // Get the field name
    var fieldName = $(this).attr('field');
    // Get the form name
    var $form=$(this).closest("form");
    //var $form=$(this.form);
    // Get its current value
    var currentVal = parseInt($form.find('input[name='+fieldName+']').val());
    // If is not undefined
    if (!isNaN(currentVal)) {
        // Increment
        $form.find('input[name='+fieldName+']').val(currentVal + 1);
    } else {
        // Otherwise put a 0 there
        $form.find('input[name='+fieldName+']').val(0);
    }
});
于 2013-04-28T04:22:15.417 回答
0

为什么不这样做简单:

jQuery(document).ready(function(){
    // This button will increment the value
    $('.qtyplus').click(function(e){
        // Stop acting like a button
        e.preventDefault();
        // Get the field name
        fieldName = $(this).attr('field');
        // Get the form name
        var form=$(this).parents("form");

        var input = form.find("input[name='"+fieldName+"']'");
        // Get its current value
        var currentVal = parseInt(input.val());
        // If is not undefined
        if (!isNaN(currentVal)) {
            // Increment
           input.val(currentVal + 1);
        } else {
            // Otherwise put a 0 there
            form.attr("id").val(0);
        }
    });
    // This button will decrement the value till 0
    $(".qtyminus").click(function(e) {
        // Stop acting like a button
        e.preventDefault();
        // Get the field name
        fieldName = $(this).attr('field');
        // Get its current value
        var currentVal = parseInt($('input[name='+fieldName+']').val());
        // If it isn't undefined or its greater than 0
        if (!isNaN(currentVal) && currentVal > 0) {
            // Decrement one
            $('input[name='+fieldName+']').val(currentVal - 1);
        } else {
            // Otherwise put a 0 there
            $('input[name='+fieldName+']').val(0);
        }
    });
});

因为我们可以访问父表单,所以我们不应该只访问它来获取 id 并使用该 id 再次查找表单。

于 2013-04-28T04:26:49.193 回答