我想在JSP页面里实现点击一次按钮就增加一个<s:textfield>输入框,需要用到struts2提交的,也就是说在<s:textfield>的name属性的值要跟Action类的属性变量要一样。请高手指点!

解决方案 »

  1.   

    <div id="textfields"></div>
    <input/ type="button" onclick="add()">
    function add(){
        var tf = "<s:textfield>";
        document.getElementById("textfields").innerHTML = tf;}大概就是这个思路,代码没有测试 ,希望有用
      

  2.   

    楼上明显有问题。
    document.getElementById("textfields").innerHTML = tf;
    这一句再添加只是替换原来的,不会增多楼主看我博客一个类似的例子吧。也是这个功能。div+css+jQuery简单实现投票功能..
    http://blog.csdn.net/isea533/article/details/7868681上面的选项就是点击“增加一个”增加的,后面的按钮X还可以删除。
      

  3.   

    js 添加 删除 效果找一下吧  直接用字符串做模板添加s:textfield name="" name名字对应action的一个数组属性
    用数组来操作
      

  4.   


    //增加行
    function addRow() 


    //添加一行 
    var mainTable = document.getElementById("yourtable");
    var newTr = mainTable.insertRow(); var newTd0 = newTr.insertCell(); 
    var newTd1 = newTr.insertCell(); 
    //设置列内容和属性
    newTd0.innerHTML = "<s:textfield name="" label=""></s:textfield>"
    newTd1.innerHTML = "<input type=\"button\" name=\"add\" value=\"删除\" onClick=\"delRow(this)\">";}//删除行 
    function delRow(obj){ 
    var tr = this.getRowObj(obj); 
    if(tr != null){ 
    tr.parentNode.removeChild(tr); 
    }else{ 
    throw new Error("the given object is not contained by the table"); 

    }
    这是动态增加行的代码,但是你用的是Struts2提交。
    有多个
    <s:textfield name="name"></s:textfield>
    一样的你怎么处理.建议你用普通form表单提交,后台用request.getParameterMap()获取值。
      

  5.   


    或者可以获取所有的文本框值生成json 放入隐藏域传到后台。