2013-04-30 94 views
0

我希望在啓用提交按鈕之前填寫三個字段。下面的jquery是一種工作,但提交按鈕被啓用,即使並非所有三個字段都要填充,除了下拉列表選擇。請不要介意這個爛攤子,我正在嘗試幾種不同的方式來調試這個,但我很茫然。如前所述,選擇列表的工作原理應該如此。請查看jsfiddle示例。爲什麼我的提交按鈕被填充?

http://jsfiddle.net/FPtCE/

HTML: --------- 高 中 低

<input class="required" id="id_title" name="title" placeholder="Please enter a title."  type="text" /> 

<textarea class="required" id="id_comment" name="comment" placeholder="Comment is required"> 
</textarea> 

<input id='submit' type="Submit" value="Submit Comment"> 

</form> 

的jQuery:

$(document).ready(function() { 
var val1 = false; 
var val2 = false; 
var val3 = false; 

$('input[id="submit"]').attr('disabled','disabled');       
    $('textarea[id="id_comment"]').keyup(function() { 
    if (val2 == false || val3 == false ||  (!$.trim($('textarea[id="id_comment"]').val())) && ($('textarea[id="id_comment"]').val() == '')) { 
     $('input[id="submit"]').attr('disabled','disabled'); 
     val1 = false; 
    alert ("Comment set:"+val1+", Title set: "+val2+", Priority set: "+val3) 
    } 

    else{ 
    $('input[id="submit"]').removeAttr('disabled'); 
    val1 = true; 
    alert ("Comment set:"+val1+", Title set: "+val2+", Priority set: "+val3) 
    } 
}); 

$('input[id="id_title"]').keyup(function() { 
    if (!$.trim($('input[id="id_title"]').val())){ 
    if (val1 == false && val3 == false){ 
    if ($('input[id="id_title"]').val() == ''){ 
     $('input[id="submit"]').attr('disabled','disabled'); 
     val2 = false; 
     alert ("Comment set:"+val1+", Title set: "+val2+", Priority set: "+val3) 
    } 
    } 
    } 
     else if (!$.trim($('input[id="id_title"]').val())){ 
    if (val1 == false && val3 == false){ 
    if($('input[id="id_title"]').val() != '') { 
     $('input[id="submit"]').attr('disabled','disabled'); 
     val2 = true; 
     alert ("Comment set:"+val1+", Title set: "+val2+", Priority set: "+val3) 
    } 
    } 
    } 
    else{ 
    $('input[id="submit"]').removeAttr('disabled'); 
    val2 = true; 
    alert ("Comment set:"+val1+", Title set: "+val2+", Priority set: "+val3) 
    }                      
});                       

$('select[id="id_priority"]').change(function() { 
    if (val1 == false && val2 == false && ($('select[id="id_priority"]').val() == '')) { 
     $('input[id="submit"]').attr('disabled','disabled'); 
     val3 = false; 
     alert ("Comment set:"+val1+", Title set: "+val2+", Priority set: "+val3) 
    } 
    else if (val1 == false && val2 == false && ($('select[id="id_priority"]').val() != '')) { 
     $('input[id="submit"]').attr('disabled','disabled'); 
     val3 = true; 
     alert ("Comment set:"+val1+", Title set: "+val2+", Priority set: "+val3) 
    } 
    else{ 
    $('input[id="submit"]').removeAttr('disabled'); 
    val3 = true; 
    alert ("Comment set:"+val1+", Title set: "+val2+", Priority set: "+val3) 
    } 
}); 

});  
+0

不相關的問題,但'$ ('tag [id = something]')'最好寫成'$('#something')'。 – Barmar 2013-04-30 01:25:22

回答

1

檢查這一點,如果這是你需要什麼: -

Fiddle

function checkSubmit() { 

     $('#submit').prop('disabled', !((($('#id_priority').val() !== "") 
     && $('#id_title').val() !== "" 
     && $('#id_comment').val() !== ""))); 
    } 

最簡單的版本: - Fiddle

$(document).ready(function() { 
    $('#submit').attr('disabled', 'disabled'); 
    $('#id_comment').keyup(checkSubmit); 
    $('#id_title').keyup(checkSubmit); 
    $('#id_priority').change(checkSubmit); 

    function checkSubmit() { 

     $('#submit').prop('disabled', !(($('#id_priority').val() !== "") 
         && $.trim($('#id_title').val()) !== "" 
         && $.trim($('#id_comment').val())!== "")); 
     } 
}); 
+1

神聖schnikes!我曾經想過那個人!謝謝您的幫助。對此,我真的非常感激。 – user1462141 2013-04-30 01:53:28

+0

不要緊,發生很多次... :) – PSL 2013-04-30 01:54:51