当在js里点击radio的时候,会生成一个text和添加按钮,再点击生成的添加按钮的话,就会生成一个text和删除按钮。 但我点击好几次radio之后,再点击添加按钮的话,就会生成很多个text和删除按钮(之前点击几次radio,就生成几个),可能因为JS里触发了radio事件导致,怎么才能不管radio点击多少次,只要点击一次添加按钮的话,只生成一个text和删除按钮php代码
<form name="userinfo" method="post" action="" enctype="multipart/form-data"  onsubmit="return false;" >
<input type="hidden" name="user_seq" value="{user.user_seq}" />
<input type="hidden" name="has_user_login_id" value="{user.has_user_login_id}" />
<span class="bigtitle"><input type = "text" name="big_title" value=""></span>
<div id="use_flag">
<input type="checkbox" name="use_flag" value="">使用与否
</div>
<fieldset>
<legend>New info</legend>
<table class="formTable">
<tbody>
<tr>
<th><input type="checkbox">{=_('标题')}</th>
<td colspan="3" class="length"><input type="text" name="title" value="" ></td>
</tr>
<tr> 
<th>{=_('内容')}</th>
<td colspan="3">
<input type="radio" id="textbox" name="select" value="1"> Textbox
<input type="radio" id="radio"   name="select" value="2"> radio button
<input type="radio" id="checkbox" name="select" value="3"> checkbox
<br> 
</td>
</tr>
</tbody>
</table>
<br>
<div class="edit">
<button class="btn" id="add">继续</button>
</div>
</fieldset>
</form>JS代码
$('#radio').click(function(){

var tr_last = $('.formTable tbody tr td').eq(1);
if(tr_last.find('.btn_radio_opt').length < 1)
{
tr_last.append('<span style="display:block;margin-top:5px"><input type="text" name="radio" value=""><button name="radio_btn_add" class="btn_radio_opt">添加</button></span>');
}
$('.btn_radio_opt').click(function(){



$(this).after('<span style="display:block;margin-top:5px"><input type="text" name="radio" value=""><button name="radio_btn_del" class="btn_radio_del_opt">删除</button></span>');
$('.btn_radio_del_opt').click(function(){
$(this).prev().remove();
$(this).remove();
});
});
});

解决方案 »

  1.   

    还有一个问题是,当点击继续按钮,然后生成新的标题和内容时,如果不点击radio的话,在之前生成的标题和内容里,点击添加按钮就不会生效,但之前之前的就生效。而且之前之前的里点击添加按钮就会生成一个text和删除按钮,但点击之前之前之前的里的添加按钮就会生成两个text和删除按钮。以此类推。是下面JS代码哪里没写好呢
    JS所有代码如下
    (function($){
    $(document).ready(function(){

    var flag = true;
    var title = $('input[name=title]');

    $('#textbox').click(function(){
    $(this).parent().find('input[type="text"]').remove();
    $(this).parent().find('button').remove();

    });

    $('#radio').click(function(){

    var tr_last = $('.formTable tbody tr td').eq(1);
    if(tr_last.find('.btn_radio_opt').length < 1)
    {
    tr_last.append('<span style="display:block;margin-top:5px"><input type="text" name="radio" value=""><button name="radio_btn_add" class="btn_radio_opt">添加</button></span>');
    }
    $('.btn_radio_opt').click(function(){
    $(this).after('<span style="display:block;margin-top:5px"><input type="text" name="radio" value=""><button name="radio_btn_del" class="btn_radio_del_opt">删除</button></span>');
    $('.btn_radio_del_opt').click(function(){
    $(this).prev().remove();
    $(this).remove();
    });
    });
    });

    $('#checkbox').click(function(){
    var tr_last = $('.formTable tbody tr td').eq(1);
    if($(tr_last).find('.btn_checkbox_opt').length < 1)
    {
    $(tr_last).append('<span style="display:block;margin-top:5px"><input type="text" name="checkbox" value=""><button name="chk_btn_add" class="btn_checkbox_opt">添加</button></span>');
    }

    $('.btn_checkbox_opt').click(function(){
    $(this).after('<span style="display:block;margin-top:5px"><input type="text" name="checkbox" value=""><button name="chk_btn_del" class="btn_chk_del_opt">删除</button></span>');
    $('.btn_chk_del_opt').click(function(){
    $(this).prev().remove();
    $(this).remove();
    });
    }); });

    $('#add').click(function(){
    if($('.formTable tbody tr').eq(0).find('input[type=text]').val() == "")
    {
    alert('请输入标题!');return;
    }
    else
    {
    if($('.formTable tbody tr').eq(1).find('input[type=radio]:checked').length!= 0)
    {
    var tr_last = $('.formTable tbody tr:last');
    $(tr_last).after($('.formTable tbody tr').eq(1).clone()).after($('.formTable tbody tr').eq(0).clone()); $('.formTable tbody tr').eq(0).find(':input[type=text]').val("");
    $('.formTable tbody tr').eq(1).find('.btn_radio_opt').remove();
    $('.formTable tbody tr').eq(1).find('.btn_radio_del_opt').remove();
    $('.formTable tbody tr').eq(1).find('.btn_chk_del_opt').remove();
    $('.formTable tbody tr').eq(1).find('.btn_checkbox_opt').remove();
    $('.formTable tbody tr').eq(1).find(':text[name="radio"]').remove();
    $('.formTable tbody tr').eq(1).find(':text[name="checkbox"]').remove();
    $('.formTable tbody tr').eq(1).find('input:radio').each(function(){
    var oldname = $(this).attr("name");
    $(this).attr("name",oldname+"a");
    });
    $('.formTable tbody tr').eq(1).find('input:text').each(function(){
    var textname = $(this).attr("name");
    $(this).attr("name",textname+"a");
    });

    $('.formTable tbody tr').eq(0).find('input:text').each(function(){
    var title = $(this).attr("name");
    $(this).attr("name",title+"a");
    });
    $('.formTable tbody tr').eq(1).find('button').each(function(){
    var btn = $(this).attr("name");
    $(this).attr("name",btn+"a");
    });
    }
    else
    {
    alert('请输入内容格式');return;
    }
    } });
    $('#popup>thead>tr>td>span>a.save').click(function(){

    var frm = $('form[name=userinfo]');
    var url = '/hr/survey/insert';
    if($(frm).find(':hidden[name=user_seq]').val() > 0)
    {
    url = '/hr/survey/update';
    }
    $(frm).attr('action', url);
    $(frm).submit();
    });
    });
    })(jQuery);
      

  2.   

    你给添加的text 和add button 加个id 然后每次添加前先删除之前的 text 和 add button 不就成了?
    或者弄个div 把添加的text 和 button 添加到里面 每次点击添加前先清空.然后再添加也可以嘛...
      

  3.   

    2楼的PhpNewnew,按照您说的我该怎么写呢? 因为jquery才学几天,所以不是很懂
      

  4.   

    好像我这么写不对,请各位看看,下面这个只能添加一个了。 $('#radio').click(function(){
            

    var tr_last = $('.formTable tbody tr td').eq(1);
    if(tr_last.find('.btn_radio_opt').length < 1)
    {
    tr_last.append('<span style="display:block;margin-top:5px"><input type="text" name="radio" value=""><button name="radio_btn_add" class="btn_radio_opt">添加</button></span>');
    }
    $('.btn_radio_opt').click(function(){
    $('#radioid').remove();
    $(this).after('<div id="radioid"><span style="display:block;margin-top:5px"><input type="text" name="radio" value=""><button name="radio_btn_del" class="btn_radio_del_opt">删除</button></span></div>');
    $('.btn_radio_del_opt').click(function(){
    $(this).prev().remove();
    $(this).remove();
    });
    });
    });
      

  5.   

    $("#radioid:last:not"); 我想选择radioid中不是最后一个的,该怎么选啊?
      

  6.   

    如下是我写的JS代码,发现很多问题,但不会解决,请各位帮我看看哪里需要修改。(function($){
    $(document).ready(function(){

    var flag = true;
    var title = $('input[name=title]');

    $('#textbox').click(function(){
    $(this).parent().find('input[type="text"]').remove();
    $(this).parent().find('button').remove();

    });

    $('#radio').click(function(){
    var tr_last = $('.formTable tbody tr td').eq(1);
    if(tr_last.find('.btn_radio_opt').length < 1)
    {
    tr_last.append('<span style="display:block;margin-top:5px"><input type="text" name="radio" value=""><button name="radio_btn_add" class="btn_radio_opt">추가</button></span>');
    }
    $('.btn_radio_opt').click(function(){
    $(".radioid:not(':first')").remove();
    $(this).after('<div class="radioid"><span style="display:block;margin-top:5px"><input type="text" name="radio" value=""><button name="radio_btn_del" class="btn_radio_del_opt">삭제</button></span></div>');
    $('.btn_radio_del_opt').click(function(){
    $(this).prev().remove();
    $(this).remove();
    });
    });
    });

    $('#checkbox').click(function(){
    var tr_last = $('.formTable tbody tr td').eq(1);
    if($(tr_last).find('.btn_checkbox_opt').length < 1)
    {
    $(tr_last).append('<span style="display:block;margin-top:5px"><input type="text" name="checkbox" value=""><button name="chk_btn_add" class="btn_checkbox_opt">추가</button></span>');
    }

    $('.btn_checkbox_opt').click(function(){
    $(this).after('<span style="display:block;margin-top:5px"><input type="text" name="checkbox" value=""><button name="chk_btn_del" class="btn_chk_del_opt">삭제</button></span>');
    /*****************************************************************************************************/
    $('.btn_chk_del_opt').click(function(){
    $(this).prev().remove();
    $(this).remove();
    });
    /*****************************************************************************************************/
    }); });

    $('#add').click(function(){
    if($('.formTable tbody tr').eq(0).find('input[type=text]').val() == "")
    {
    alert('请输入标题!');return;
    }
    else
    {
    if($('.formTable tbody tr').eq(1).find('input[type=radio]:checked').length!= 0)
    {
    var tr_last = $('.formTable tbody tr:last');
    $(tr_last).after($('.formTable tbody tr').eq(1).clone()).after($('.formTable tbody tr').eq(0).clone());
    /*****************************************************************************************************/
    $('.formTable tbody tr').eq(0).find(':input[type=text]').val("");
    $('.formTable tbody tr').eq(1).find('.btn_radio_opt').remove();
    $('.formTable tbody tr').eq(1).find('.btn_radio_del_opt').remove();
    $('.formTable tbody tr').eq(1).find('.btn_chk_del_opt').remove();
    $('.formTable tbody tr').eq(1).find('.btn_checkbox_opt').remove();
    $('.formTable tbody tr').eq(1).find(':text[name="radio"]').remove();
    $('.formTable tbody tr').eq(1).find(':text[name="checkbox"]').remove();
    /*****************************************************************************************************/
    $('.formTable tbody tr').eq(1).find('input:radio').each(function(){
    var oldname = $(this).attr("name");
    $(this).attr("name",oldname+"a");
    });
    /*****************************************************************************************************/
    $('.formTable tbody tr').eq(1).find('input:text').each(function(){
    var textname = $(this).attr("name");
    $(this).attr("name",textname+"a");
    });
    /*****************************************************************************************************/
    $('.formTable tbody tr').eq(0).find('input:text').each(function(){
    var title = $(this).attr("name");
    $(this).attr("name",title+"a");
    });
    /*****************************************************************************************************/
    $('.formTable tbody tr').eq(1).find('button').each(function(){
    var btn = $(this).attr("name");
    $(this).attr("name",btn+"a");
    });

    /*****************************************************************************************************/
    }
    else
    {
    alert('请输入内容格式');return;
    }
    } });
    $('#popup>thead>tr>td>span>a.save').click(function(){

    var frm = $('form[name=userinfo]');
    var url = '/hr/survey/insert';
    if($(frm).find(':hidden[name=user_seq]').val() > 0)
    {
    url = '/hr/survey/update';
    }
    $(frm).attr('action', url);
    $(frm).submit();
    });
    });
    })(jQuery);
      

  7.   

    我发现$(".radioid:not(':first')").remove(); 这句就有问题,加了这句就只能添加两个text和删除按钮,而且在点击继续按钮的时候新生成的标题和内容里面,在内容里点击添加会把之前标题和内容里的text和删除按钮给删掉,等等的问题。我想是不是要给这些添加按钮以及text赋id或class进行区分? 但又不知道如何赋不同的id和class。