2009-12-20 34 views
0

我寫了一個簡單的數值檢查器所需的投入,請在這裏看到演示:jQuery的輸入檢查 - 禁用提交 - 問題

http://wip.redaxscript.com/login

$('.required').keyup(function(){ 
    if($(this).val() == '') { 
     $(this).addClass('warning'); 
     $('.meet').addClass('disabled').attr('disabled',true); 
    } else { 
     $(this).removeClass('warning'); 
     //if($(this).siblings('.required').val() == '') { 
     //this should check if other requiered fields are empty 
     //but it fails 
      $('.meet').removeClass('disabled').attr('disabled',false); 
     //} 
    } 
}); 

如果您1.輸入值,以投入和2.同時刪除 - 和3.然後爲其中的一個輸入值,提交已啓用(失敗) - 但需要輸入的內容爲空,因此提交仍必須禁用。

我試圖檢查兄弟姐妹「.required」的價值,但它不起作用。

+0

您可以通過點擊下方的灰色'edit'鏈接編輯你的問題。 – SLaks 2009-12-20 17:59:26

回答

0

假設你只希望要啓用的按鈕,如果兄弟姐妹的所有有一個值:

if ($('.required[value=]').length > 0) 
    $('.meet').removeClass('disabled').attr('disabled',false); 

注意$(this).siblings('.required')不會返回任何元素,因爲它只返回直接兄弟姐妹。 (input唯一的直接兄弟是它的label

1

你可能想要開始時提交按鈕被禁用,如果這些值是空的,並且在兩者都有東西時就改變它。請嘗試:

if($('.meet').val() == ''){ 
    $('.meet').addClass('disabled').attr('disabled',true); 
} 

$('.required').keyup(function(){ 
    if($(this).val() == '') { 
     $(this).addClass('warning'); 
    }else{ 
     $(this).removeClass('warning'); 
    } 

    if($('.required[value=]').length == 0){ 
     $('.meet').removeClass('disabled').attr('disabled',false); 
    }else{ 
     $('.meet').addClass('disabled').attr('disabled', true); 
    } 
}); 
0

您應該從禁用登錄按鈕開始。您還應該將禁用的屬性設置爲disabled而不是truefalse

你的檢查

$(this).siblings('.required').val() == '' 

不起作用,因爲沒有兄弟姐妹.required輸入字段你在你的HTML看起來像這樣。但第二個輸入不是兄弟姐妹,因爲它有不同的父母。

<li> 
    <label for="username">Benutzername:</label> 
    <input type="text" name="username" id="username" class="text required" value="" maxlength="10" /> 
</li> 
<li> 
    <label for="password">Passwort:</label> 
    <input type="password" name="password" id="password" class="text required" value="" maxlength="10" /> 
</li> 

修正jQuery的富

$('.meet').addClass('disabled').attr('disabled','disabled'); 
$('.required').keyup(function(){ 
    if($(this).val() == '') { 
     $(this).addClass('warning'); 
     $('.meet').addClass('disabled').attr('disabled','disabled'); 
    } else { 
     $(this).removeClass('warning'); 
     if($(this).parent().next().find('input.required').val() != '') { 
      $('.meet').removeClass('disabled').attr('disabled',''); 
     } 
    } 
});