选择同级输入框取决于它们是否在先前输入中输入了详细信息

时间:2011-12-21 01:19:03

标签: javascript jquery

我使用以下代码:

$.each($('.friendName'), function(){
    if($(this).val() != ''){
        var idName = $(this).attr('id');
        var name = $(this).val();
        var email =  $('#' + idName + ' ~ input').first().val();
        alert(email);
    }
});

此代码应使用friendName类(3个输入框)遍历每个元素。

非空的,我希望它找到相关的friendEmail输入框。例如:

friendName1 - friendEmail1
friendName2 - friendEmail2
friendName3 - friendEmail3

这应仅包含包含详细信息的项目的结果,如果仅填写friendName1friendEmail1,则不计算其余项目。

出于某种原因,我无法得到它来获取friendEmail输入的值,我猜是因为它不是兄弟。

我们非常感谢您的帮助,如果您可以推进我的代码,以便检查每个friendNamefriendEmail是否包含值,那么将它们返回为var name并且var email,那太好了。

<div>
    <label for="friendName1">Friend's Name</label>
    <input type="text" id="friendName1" name="friendName1" class="friendName" value="" />
</div>

<div>
    <label for="friendEmail1">Friend's Email</label>
    <input type="text" id="friendEmail1" name="friendEmail1" value="" />
</div>

<div>
    <label for="friendName2">Friend's Name</label>
    <input type="text" id="friendName2" name="friendName2" class="friendName" value="" />
</div>

<div>
    <label for="friendEmail2">Friend's Email</label>
    <input type="text" id="friendEmail2" name="friendEmail2" class="friendEmail" value="" />
</div>

<div>
    <label for="friendName3">Friend's Name</label>
    <input type="text" id="friendName3" name="friendName3" class="friendName" value="" />
</div>

<div>
    <label for="friendEmail3">Friend's Email</label>
    <input type="text" id="friendEmail3" name="friendEmail3" class="friendEmail" value="" />
</div>

2 个答案:

答案 0 :(得分:0)

我使用方法http://jsfiddle.net/a2kHt/2/

创建了一个jsFiddle
$(function(){
    $(".friendName[value!='']").each(function(){
        var idEmail = 'friendEmail' + $(this).attr("id").replace('friendName','');
        if($("#"+idEmail+"[value!='']").length > 0){
            alert("Name: " + $(this).val() + " - Email: " + $("#"+idEmail).val());
        }
    })
});

答案 1 :(得分:0)

仅供参考,

$( '.friendName' ).each( function(){} );

也有效。 ;)

由于您使用类&#39; .friendName&#39;循环遍历元素,您可以尝试这样:

$( '.friendName' ).each( function( index, elem ) {
    if($(this).val() != ''){
         var idName = $(this).attr('id');
        var name = $(this).val();
        var email =  $('#friendMail' + index).first().val();
        console.log( email );
    }
} );

索引是数组中的索引,或者在这种情况下是计数器变量,如果你想要的话。 Elem是元素,不包含在jQuery中。

顺便说一下,

console.log( email );
// instead of alert( email );

这为您提供了更多信息,甚至可以与FireBug或Chrome和IE9中内置的开发人员工具进行交互。

EDITH:

我现在也用jsFiddle创建了一个尝试。 This是我提出来的。有用。我的坏处是,该指数必须增加1。