Jquery,单击()方法选中单选按钮

时间:2011-04-17 18:55:14

标签: jquery forms click radio-button

我创造了一个巨大的形式。我必须用Jquery做很多动作。我已经完成了我可以采取行动的部分。现在是时候进行控制了。

通过控件我的意思是,假设我将编辑数据,我必须收集选择/检查哪个表单元素等,这取决于我必须显示额外表单元素的变量。

我已经为行动编写了超过300行的Jquery。我现在必须做控件但我不想复制和粘贴并编辑超过300行的Jquery代码,所以我试图采用懒惰方式,但它没有用。

// Category
if ($('input[name=category]:checked').val() == 1) {
    $('input[name=category]:eq(1)').click();
}
// Product
else if ($('input[name=category]:checked').val() == 0) {
    $('input[name=category]:eq(0)').click();
}
// Undefined Value
else {
    $('.frm_options').slideUp();
}

我不知道为什么上面的代码不起作用。我可以看到它正在更改单选按钮元素的已检查属性,但不是没有单击所以它将显示表单的其余部分。

/********************************************************************************************
                                    ACTIONS
********************************************************************************************/
$('input[name=category]').bind('click', function () {
    // Show rest of the form
    $('.frm_options').slideDown();

    // Product Specific
    if ($(this).val() == 0) {
        $('.frm_category_0').fadeIn(1000);
        $('.frm_category_1').fadeOut(1000);
    }
    // Category Specific
    else if ($(this).val () == 1) {
        $('.frm_category_1').fadeIn(1000);
        $('.frm_category_0').fadeOut(1000);
        }
        // Undefined Value, Hide everything
        else{
                $('.frm_options').slideUp();
                $('.frm_category_1').slideUp();
                $('.frm_category_0').slideUp();
        }
});

我想我现在要做的更清楚了。我只是试图操纵点击功能,所以我不必再次编写所有代码。

任何人都知道我遇到的这个问题的解决方案?如果有人能帮助我解决我的问题,我将非常高兴。

提前谢谢。

3 个答案:

答案 0 :(得分:1)

/********************************************************************************************
                                    ACTIONS
********************************************************************************************/
$('input[name=category]').bind('click', function () {
    // Show rest of the form
    $('.frm_options').slideDown();

    // Product Specific
    if ($(this).val() == 0) {
        $('.frm_category_0').fadeIn(1000);
        $('.frm_category_1').fadeOut(1000);
    }
    // Category Specific
    else if ($(this).val () == 1) {
        $('.frm_category_1').fadeIn(1000);
        $('.frm_category_0').fadeOut(1000);
        }
        // Undefined Value, Hide everything
        else{
                $('.frm_options').slideUp();
                $('.frm_category_1').slideUp();
                $('.frm_category_0').slideUp();
        }
});


// Category
if ($('input.category:checked').val() == 1) {
    $('input.category:eq(1)').click();
}
// Product
else if ($('input.category:checked').val() == 0) {
    $('input.category:eq(0)').click();
}
// Undefined Value
else {
    $('.frm_options').slideUp();
}// Category
if ($('input[name=category]:checked').val() == 1) {
    $('input[name=category]:eq(1)').click();
}
// Product
else if ($('input[name=category]:checked').val() == 0) {
    $('input[name=category]:eq(0)').click();
}
// Undefined Value
else {
    $('.frm_options').slideUp();
}

您希望将来电移至.click以下的.bind。否则,在附加事件处理程序之前单击元素。

答案 1 :(得分:0)

触发点击事件,您需要trigger

编辑:

也试试这个(jquery namespaced events

在行动中$('input[name=category]').bind('click.category', function () {

并在控件中执行$('input[name=category]:eq(1)').trigger('click.category');

HTH

答案 2 :(得分:0)

您的代码是按顺序排列的,然后编写代码来生成它。