如果#new_user:
,我需要更改输入的value属性最优雅的解决方案是什么?
提前致谢!
<form id="new_user" class="artist-registration">
<input type="hidden" value="artist" name="user[profile_attributes][role]" id="user_profile_attributes_role">
</form>
答案 0 :(得分:1)
你的问题不是很清楚,但我想你是说如果表单元素有“艺术家注册”类,那么将输入元素的值设置为“artist”,对其他类名称等等?
如果您知道#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);
后者将根据哪个类匹配 first 来设置值,即,如果表单具有所有三个类,则“artist-registration”将优先。
答案 1 :(得分: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()
函数更新给定集合中每个元素的值。对于两个不匹配的调用,该集合为空,因此调用是无操作。