-1

#new_userの場合、入力のvalue属性を変更する必要があります。

  • .artist-アーティストへの登録があります
  • .team-artist_teamへの登録があります
  • .consumer-消費者への登録があります

それを行うための最もエレガントなソリューションは何ですか?

前もって感謝します!

<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

あなたの質問はあまり明確ではありませんが、form要素のクラスが「artist-registration」の場合、他のクラス名の入力要素の値を「artist」に設定するなどと言っていると思いますか?

#new_userクラスが1つしかないことがわかっている場合は、次のようになります。

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);

後者は、最初に一致するクラスに応じて値を設定します。つまり、フォームに3つのクラスすべてがある場合、「artist-registration」が優先されます。

于 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名前付きクラスが要素の実際のクラスと一致しない2つの場合、このセットは空です。

次に、このval()関数は、指定されたセット内のすべての要素の値を更新します。一致しない2つの呼び出しの場合、セットは空であるため、呼び出しはノーオペレーションです。

于 2012-06-07T11:17:14.830 に答える