2015-06-09 80 views
2

在我的應用程序禁用或啓用按鈕我有多個div看起來像(的div是動態創建的):基於一些條件

<div class="form-group clearfix"> 
    <div class="form-group first-name"> 
     <input type="text" id="firstName0" class="signup-input firstName required" name="first[0]" placeholder=""> 
    </div> 
    <div class="form-group last-name"> 
     <input type="text" id="lastName0" class="signup-input lastName" name="last[0]" placeholder="optional"> 
    </div> 
    <div class="form-group email"> 
     <input type="text" data-index="0" id="inputMail0" class="signup-input mail" name="email[0]" placeholder="e.g. [email protected]" aria-invalid="true"> 
     <span class="common-sprite sign-up-cross first"></span> 
    </div> 
</div> 

的名稱被根據索引動態生成的(例如,是電子郵件[1],電子郵件[2] .....)。

我有一個按鈕,如果名字的字段是not empty,並且電子郵件的字段is empty和跨度沒有disNone的等級,則應禁用該按鈕。

如何根據上述條件禁用按鈕?

+0

可能這應該從#1,請仔細閱讀條款及條件..然後問的問題,這不是一個問題和答案論壇,在Stackoverflow你可以發佈問題,如果你的代碼中有任何錯誤。 – Selva

回答

0

希望這種情況適合你。

將jQuery對象存儲在變量中並使用該變量,這是一種更好的方法。

$(function(){ 

    var firstName = $('#firstName0').val();  
    var inputMail = $('#inputMail0').val();  
    var checkClass = $('span').hasClass('disNone'); 

    if(firstName!=='' && inputMail==='' && !checkClass) { 
     $('button').attr('disabled','disabled'); //in the fiddle you would see an alert, you just have to replace that code with this one 
    } 

}); 

編輯:如果您DIVS正在生成的動態,你可以通過他們使用each() jQuery函數循環。

$(function(){ 

$('#mainDiv').children('div').each(function(index,element){ 
var nameDiv = $(element).find(":nth-child(1)"); 
var firstName = $(nameDiv).find('input').val(); 
var emailDiv = $(element).find(":nth-child(3)"); 
var inputMail = $(emailDiv).find('input').val();  
var spanElem = $(emailDiv).find("span"); 
var checkClass = $(spanElem).hasClass('disNone'); 
    if(firstName!=='' && inputMail==='' && !checkClass){ 
    $('button').attr('disabled','disabled'); 
//in the fiddle you would see a console.log('hi'), you just have to replace that code with this one for whatever button you want to disable 
    } 
}); 
}); 

結帳的FIDDLE LINK

在我已經離開了一個SPAN標籤disNoneSPAN標籤小提琴無disNone類。所以,只有當條件執行

+0

'empty'函數是如何工作的?同樣,OP看起來它*不*具有'disNone'的跨度類。 –

+0

是的,該方法/函數清空給定選擇器的所有孩子,從我能看到的?! –

+0

牙齒Unkn0wn-divs是動態創建的,所以你的例子不適合這種情況 –

0

如果我理解正確的話,要禁用按鈕,如果所有滿足以下條件: -

  1. 名字字段不爲空 - $('#firstName0').val() != ''
  2. 電子郵件字段爲空 - $('#inputMail0').val() == ''
  3. 跨度不具有類disNone的 - !$('span').hasClass('disNone')

所以我會檢查COND

$('.form-group').on('keyup', function() { 
    console.log('keyup'); 
    if ($('#firstName0').val() !== '' && $('#inputMail0').val() === '' && !$('.email span').hasClass('disNone')) { 
     //Now do whatever with your button. 
     $('.mybutton').prop('disabled', true); 
    } else { 
     $('.mybutton').prop('disabled', false); 
    } 
}); 

演示:通過在形式在聽衆包裹它的keyup事件銀行足球比賽這樣http://jsfiddle.net/ajj87Lg3/