如何使用另一个输入的文本追加隐藏的输入

时间:2012-08-29 11:31:04

标签: jquery forms dom-manipulation

一直在努力解决这个问题,我试图做的是先从文本中创建第二个隐藏的输入字段,这取决于所选择的内容,这是我尝试过的:

  <script>
   var $extraval = $('#citycode option:selected').text();
   var input = $("<input>").attr("type", "hidden").attr("name", "city").val("$extraval");
   $('#form').append($(input));
  </script>

这是第一个选择看起来像

<select id="citycode" name="citycode">
  <option value="3439389">Asuncion</option>
  <option value="3439352">Bella Vista</option>
  <option value="3439101">Ciudad Del Este</option>
  <option value="3438735">Encarnacion</option>
</select>

所以基本上我试图做的是创建第二个隐藏的表单输入,当提交输入的值时,使用此选择的文本

5 个答案:

答案 0 :(得分:2)

.val($extraval)代替.val("$extraval")。这不是PHP。

jsFiddle Demo(创建文本输入而不是隐藏 - 用于可见性目的)

此外,选择器'#form'要求代码中的表单具有标识form。您可以使用以下方法之一获取select所属的表单:

$('#citycode').closest('form').append(input);

input.appendTo($('#citycode').prop('form'));

答案 1 :(得分:2)

假设它在#form内,我发现了两个错误:

  • 当您尝试将"值设置为input作为参数时,您不必使用$extraval
  • 输入已经是一个jQuery对象,所以要附加它,你必须执行以下操作:.append(input)

请尝试以下方法:

var extraval = $('#citycode option:selected').text();
var $input = $("<input>", {
    'type': 'hidden',
    'name': 'city',
    'value': extraval
});
$('#form').append($input);

demo

答案 2 :(得分:2)

  <script>
   var extraval = $('#citycode option:selected').text();
   var input = $("<input>").attr("type", "hidden").attr("name", "city").val(extraval);
   $('#form').append($(input));
  </script>

试试这段代码

答案 3 :(得分:2)

http://jsfiddle.net/pWkDR/ ..这就是你应该做的事情

CODE:

var $extraval = "yourtext";
var input = $("<input>").attr("type", "hidden").attr("name", "city").val($extraval);
$('body').append(input);

// check in inspect element your  hidden field is there with data

答案 4 :(得分:0)

好的,谢谢大家的帮助,这就是我如何运作

<script>
  $('#form').submit(function() {
  var extraval = $('#citycode option:selected').text();
  var $input = $("<input>", {
   'type': 'hidden',
   'name': 'city',
   'value': extraval
   });
  $('#form').append($input);
 });
</script>
放在表单末尾的

很棒