2011-03-13 174 views
27

我有一个海拉时间设置隐藏输入的值。JQuery:更改隐藏输入字段的值

我想将选项标签之间的HTML传递给隐藏的字段结束运行它将从wordpress'wp_list_dropdowns()页面标题。我已经得到它返回文本很好,并在我的更改事件正确地添加了一些CSS(显然不需要在隐藏的领域,但我试图确定事情在哪里打破)。如果我将隐藏的输入更改为文本输入,则适用。我在几个地方看到过,这是可能的,(改变隐藏输入的价值),但是现在有些东西让我感到难以接受,我看不到答案。

这里的JSFiddle

的JavaScript:

$(".selector").change(function() { 
    var $value = $(this).val(); 
    var $title = $(this).children('option[value='+$value+']').html(); 
    alert($title); 
    $('input#bacon').val($title).css('border','3px solid blue'); 
}); 

HTML:

<select class="selector" name="testselect"> 
    <option value="1">One</option> 
    <option value="2">Two</option> 
    <option value="3">Three</option> 
</select> 
</h3> 

<input id="bacon" type="hidden" class="bacon" value="" name="testinput"> 
+1

你的小提琴在我的Firefox中工作。我使用Firebug进行了检查,隐藏输入的值是否发生了变化,当我在下拉列表中选择不同的值时,它会发生变化。也许我不明白这个问题,但:-) – StefanS 2011-03-13 12:46:28

+0

对我来说工作正常:在Chrome 9中隐藏的输入值被改变了。在哪个浏览器中它不适合你,以及你使用什么方法验证它? – 2011-03-13 12:46:54

+0

你为什么认为它不能正常工作?你的小提琴似乎完全按照你所说的去做。 – Aaron 2011-03-13 12:47:10

回答

17

你的jQuery代码完美工作。 The hidden field is being updated

+1

但为什么这会失败http://jsfiddle.net/YvBfP/ – max4ever 2012-12-28 14:32:12

+3

@ max4ever您正在阅读序列化的HTML,其中'value'属性将反映其原始值。您不应盲目使用“innerHTML”相关方法的诸多原因之一。 – alex 2012-12-29 00:12:58

5

似乎工作

$(".selector").change(function() { 

    var $value = $(this).val(); 

    var $title = $(this).children('option[value='+$value+']').html(); 

    $('#bacon').val($title); 

}); 

与萤火虫只是检查。不要把CSS放在隐藏的输入上。

+1

现在似乎工作。我把CSS作为一个非常粗糙的jQuery调试工具...在firebug中查看我是否使用了正确的选择器。我一定需要休息一下。新鲜的眼睛和饱满的胃已经解决了什么显然没有被破坏(一次)。 – helgatheviking 2011-03-13 14:20:43

0

如果你在Drupal中做这件事,并且使用Form API在hook_form_alter(例如)中将#type从文本更改为'hidden',那么请注意输出HTML将具有不同的(或省略的)DIV包装器,ID和类名称。

27

很简单:

$('#action').val("1"); 

#action是隐藏的输入字段的ID。

+0

像魅力一样工作! – ersnh 2015-10-26 11:38:26