使用jquery按类列出元素内容

时间:2012-06-04 14:16:53

标签: jquery forms

我有几个使用PHP动态创建的表单。我想在每个表单上列出所有必填字段。

应该如下所示:

<div class="mandatory_list">Mandatory fields: first name, email</div>

<form>
<label>first name*</label><input type="text" />
<label>last name</label><input type="text" />
<label>email*</label><input type="text" />
<label>comments</label><input type="text" />
</form>

如果它可以简化事情,我也可以给所有强制性标签一个单独的类。我走到这一步:

<script>
    var mandatory= ( $("label:contains('*')").text() );
    $('#mandatory_list').html("Mandatory fields: " + mandatory);
</script>

这给了我以下输出:“必填字段:名字*电子邮件*”。所以这意味着我必须用逗号代替所有的星号。可能有更好的方法来解决这个问题。

2 个答案:

答案 0 :(得分:1)

你可以这样做:

var mandatory= ( $("label:contains('*')").text().split('*').join(', ') );
$('#mandatory_list').html("Mandatory fields: " + mandatory);

答案 1 :(得分:0)

我认为在强制字段上使用类更容易,但这只是选择器的首选项:

:首先,删除列表中的额外文本并添加类:

<div class="mandatory_list">Mandatory fields:</div> 

<form> 
<label class='mandatory'>first name*</label><input type="text" /> 
<label>last name</label><input type="text" /> 
<label class='mandatory'>email*</label><input type="text" /> 
<label>comments</label><input type="text" /> 
</form>

现在填充列表,删除指定的最后一个逗号:

var myList = $('.mandatory_list').text();
$('.mandatory').each(function() {
    myList += ' ' + $(this).text().replace('*', ',');
});
myList = myList.slice(0, myList.length - 1);
$('.mandatory_list').text(myList);

编辑:改编为“多种形式”

$('form').each(function() {
    var myHeader = $(this).prev('.mandatory_list');
    var myList = myHeader.text();
    $(this).find('.mandatory').each(function() {
        myList += ' ' + $(this).text().replace('*', ',');
    });
    myList = myList.slice(0, myList.length - 1);
    myHeader.text(myList);
});