使用jquery从按钮获取表单选择器ID

时间:2013-04-28 04:16:11

标签: jquery forms selector

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

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

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

这是按钮功能的一部分,它有效:

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

如果

formVal =一个数字。

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

form:eq0触发页面上的第一个表单。 form:eq1触发页面上的第二个表单等。

我需要让这种动态。

我一直在尝试以下代码: 的 formVal = $(本).parent( '形式')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);
        }
    });
});

2 个答案:

答案 0 :(得分: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);
    }
});

答案 1 :(得分: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再次查找表单。