-1

如果#new_user,我需要更改输入的值属性:

  • 对艺术家有 .artist-registration
  • 有 .team-registration 到 Artist_team
  • 对消费者有 .consumer-registration

最优雅的解决方案是什么?

提前致谢!

<form id="new_user" class="artist-registration">
<input type="hidden" value="artist" name="user[profile_attributes][role]" id="user_profile_attributes_role">
</form>
4

2 回答 2

1

您的问题不是很清楚,但我认为您是说如果表单元素具有“艺术家注册”类,则将输入元素的值设置为“艺术家”,对于其他类名称依此类推?

如果你知道那只#new_user会有一个类,那么就像这样:

var val = ""; // default blank value will apply if no classes match

switch ($("#new_user").attr("class")) {
   case "artist-registration":
      val = "artist";
      break;
   case "team-registration":
      val = "artist_team";
      break;
   case "consumer-registration":
      val = "consumer";
      break;
}
$('#user_profile_attributes_role').val(val);

如果#new_user可能有多个类,那么也许:

var val = "",
    $nu = $("#new_user");

switch (true) {
   case $nu.hasClass("artist-registration"):
      val = "artist";
      break;
   case $nu.hasClass("team-registration"):
      val = "artist_team";
      break;
   case $nu.hasClass("consumer-registration"):
      val = "consumer";
      break;
}
$('#user_profile_attributes_role').val(val);

后者将根据首先匹配的类别设置值,即,如果表单具有所有三个类别,则“艺术家注册”将优先。

于 2012-06-07T11:16:12.443 回答
0

使用jQuery

var $input = $('#new_user');
$input.filter('.artist-registration').val('artist');
$input.filter('.team-registration').val('artist_team');
$input.filter('.consumer-registration').val('consumer');

第一行找到你的<input>元素。$input严格来说是一个jQuery元素集。

在以下每一行中,filter()返回一个缩减的元素集,其元素与给定的 CSS 选择器匹配。input在命名类与元素的实际类不匹配的两种情况下,此集合为空。

然后该val()函数更新给定集合中每个元素的值。对于两个不匹配的调用,集合是空的,所以调用是空操作。

于 2012-06-07T11:17:14.830 回答