[英]Append an asterisk to the sibling of a div that contains a label with the class of .mandatory
我希望在div的下一个兄弟后面加上星号,该div包含带有强制类的标签。 这表示必须填写表单字段。
此强制性标记与以下代码一起使用:
jQuery('label.mandatory').parent().next().append('<span class="mandatory-marker"> * </span>');
HTML如下时:
<div class="formdetails p_3">
<div class="label">
<label for="p_3" class="mandatory" id="p_3ErrorMessage">Sexuality</label>
</div>
<div class="detail" id="ext-gen13">
<div class="x-form-field-wrap x-form-field-trigger-wrap" id="ext-gen15" style="width: 194px;">
<input type="hidden" id="ext-gen17" name="p_3" value="">
<input type="text" autocomplete="off" size="24" id="ext-gen14" class="x-form-text x-form-field" style="width: 169px;">
<img class="x-form-trigger x-form-arrow-trigger" alt="" src="#" id="ext-gen16">
</div>
<input type="hidden" value="2385" name="p_id3">
</div>
</div>
但是,在某些情况下,如果表单字段是文本区域而不是文本框,则HTML会稍有不同:
<div class="formdetails p_1">
<div class="label">
<label for="p_1" class="mandatory" id="p_1ErrorMessage">CV</label>
</div>
<div class="detail">
<div class="fileinputs">
<input type="file" class="file icams-field-text required textfield" autocomplete="off" id="p_1" name="p_1">
</div>
<input type="hidden" value="2376" name="p_id1">
</div>
</div>
在这种情况下,我希望将强制性脚本附加到文件输入div上,因此编写了以下jQuery脚本以首先检查fileinputs div是否存在,如果存在,请尝试将强制性标记附加到它上。 如果没有,它应该模仿上面脚本的行为:
jQuery('label.mandatory').each(function(){
if($(this).parent().find('div.fileinputs').length){
$(this).parent().next().find('div.fileinputs').append('<span class="mandatory-marker"> * </span>');
}else{
$(this).parent().next().append('<span class="mandatory-marker"> * </span>');
}
})
尽管出于某些原因,这似乎不起作用。 我相信这可能是由于find函数无法正常工作。 我也在这里尝试过。
是否有人对做错事有任何建议?
可以在这里找到有效的小提琴: http : //jsfiddle.net/jezzipin/qRG57/
许多人抱怨说jQuery在这里是不必要的,因此为了清除这些注释,需要IE7支持,因此我不能使用现代CSS选择器。 这就是为什么我必须使用jQuery而不是简单地使用CSS选择器来进行大量DOM操作的原因。
好的,我知道您希望在现场使用它,因此希望它能奏效。
采用
.mandatory:before{
content:" * ";
/* more styles to align the asterisk properly */
}
在这种情况下,您不需要使用jQuery,只需使用普通CSS。
编辑:我在使用input:required:before
但记得输入不支持:before
或:after
css :(
在我的if条件下会出现.next()丢失的情况,因此与其查看label.mandatory的父级同级,不如查看父级。
jQuery('label.mandatory').each(function(){
if($(this).parent().next().find('div.fileinputs').length){
$(this).parent().next().find('div.fileinputs').append('<span class="mandatory-marker"> * </span>');
}else{
$(this).parent().next().append('<span class="mandatory-marker"> * </span>');
}
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.