单击按钮时使用Jquery创建隐藏元素

时间:2013-03-15 00:24:43

标签: javascript jquery html

我有一个使用jscript提交给服务器的表单但是我需要发布提交按钮的值。这不能用传统方式完成我必须使用jscript发布表单。我正在做的是当单击按钮时我想创建一个带有按钮值的隐藏文本项并将其发布到服务器。我在创建元素并将其附加到表单时遇到了一些问题:

的JScript

 $(document).ready(function(){      

    $('#query').click(function(e){

         var form = $('citizenRegistration');


          var self= $("#query"),newElement = $("<input type='hidden'/>");

          alert("self value is : "+self.val());

                 //create a new element and copy attributes             
                newElement
                    .attr("name", 'user_request2')
                    .val(self.val())
                    .appendTo('.buttons');

            alert(newElement.attr("name"));

        e.preventDefault();
        //alert($(this).val());
        //submitPage();

    });

});

HTML

 <div class="buttons">  
    <ol>
    <li><input id="save" type="submit" name= "user_request" value="Save"/>
    <input id="update" type="submit" name= "user_request" value="Update"/>
    <input id="query" type="submit" name= "user_request" value="Query"/>
    </li>       
    </ol>
    </div>

2 个答案:

答案 0 :(得分:1)

type的调用中指定属性attr()而不是元素的构造。另外citizenRegistration的选择器缺少.#,具体取决于它是id还是类。

   $(document).ready(function(){
        $("#query").click(function(e){
             var form = $("#citizenRegistration"); //Added # may need .

              //removed type=hidden, you can just use $(this)
              var self= $(this),newElement = $("<input/>");
                     //create a new element and copy attributes             
                    newElement.attr({
                            "name":"user_request2",
                            "type":"hidden" //added new attribute
                     }).val(self.val()).appendTo(".buttons");

            e.preventDefault();
        });
    });

工作示例: http://jsfiddle.net/BXqVP/1/

使用firebug检查页面时,您可以看到隐藏的元素:

enter image description here

答案 1 :(得分:1)

如果没有看到您的HTML,我无法确定,但我发现了两个可能的问题:

var form = $('citizenRegistration');

这不是有效的选择器。它应该以{{1​​}}或#开头。但你似乎并没有最终使用它。

.

如果.appendTo('.buttons'); 是输入元素,则无法附加到该元素。如果有多个.buttons元素,也不应该附加多个.buttons元素。相反,您应该将其附加到form。只需.appendTo(form)即可。