2016-03-07 23 views
1

我有一個表格有四個字段,當所有的字段都是空的,點擊提交按鈕時,它應該提醒「請至少選擇一個值」。如何驗證表單中的單個字段時,我有5個字段使用JavaScript?

當我在任何字段中輸入值時,表單應該被提交。我試着下面的代碼,但它不是由表單內通過所有的input S的迭代工作

function validatefleid() { 
 
    var computername = document.myform.computername.value; 
 
    var monitorname = document.myform.monitorname.value; 
 
    var tvname = document.myform.tvname.value; 
 
    var laptopname = document.myform.laptopname.value; 
 
    var cellphonename = document.myform.cellphonename.value; 
 
    if ((computername == null || computername == "") || (monitorname == null || monitorname == "") || (tvname == null || tvname == "") || (laptopname == null || laptopname == "") || (cellphonename == null || cellphonename == "")) { 
 
    alert("Please atleast one value"); 
 
    return false; 
 
    } 
 

 
}
<form name="myform" onsubmit="return validatefleid()"> 
 
    computer 
 
    <input type="text" class="form-control inpt-bx-txtclr-home" name="computername" id="computerid" placeholder="000">monitor 
 
    <input type="text" class="form-control inpt-bx-txtclr-home" name="monitorname" id="monitorid" placeholder="000">tv 
 
    <input type="text" class="form-control inpt-bx-txtclr-home" name="tvname" id="tvid" placeholder="000">laptop 
 
    <input type="text" class="form-control inpt-bx-txtclr-home" name="laptopname" id="laptopid" placeholder="000">cellphone 
 
    <input type="text" class="form-control inpt-bx-txtclr-home" name="cellphonename" id="cellphoneid" placeholder="000"> 
 

 
    <button type="submit">Calculate</button> 
 
</form>

+2

1.邏輯運算符||如果所有都是空的,則必須&&以實現「失敗,如果至少輸入了一個,則成功」; 2.'document.myform.controlname'這個表示法不能用於跨瀏覽器,可以考慮用'document.getElementById('controlid')替換'並且使用控件的id,而不是名稱來在腳本中引用它們。 – dlatikay

+0

謝謝,我已經知道了 –

+0

只是在我的答案中提供了更加優雅和可讀的解決方案:-) –

回答

3

這是可能的,並且尋找至少一個input與值比''的不同。檢查演示:

$(function(){ 
 
    var $form = $('#myform'); 
 
    $form.submit(function(){ 
 
    var valid = false; 
 
    $('input', $form).each(function(){ 
 
     if($(this).val() != ''){ 
 
     valid = true; 
 
     } 
 
    }); 
 
    if (!valid) { 
 
     alert("Please atleast one value"); 
 
    } 
 
    return valid; 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form id="myform" name="myform"> 
 

 

 
computer<input type="text" class="form-control inpt-bx-txtclr-home" name="computername" id="computerid" placeholder="000"> 
 
monitor<input type="text" class="form-control inpt-bx-txtclr-home" name="monitorname" id="monitorid" placeholder="000"> 
 
tv<input type="text" class="form-control inpt-bx-txtclr-home" name="tvname" id="tvid" placeholder="000"> 
 
laptop<input type="text" class="form-control inpt-bx-txtclr-home" name="laptopname" id="laptopid" placeholder="000"> 
 
cellphone<input type="text" class="form-control inpt-bx-txtclr-home" name="cellphonename" id="cellphoneid" placeholder="000"> 
 

 
<button type="submit" >Calculate</button> 
 

 
</form>

1
oops i have got the answer 

I have a form which as four fields when the all the fields are empty and submit button is clicked it should alert as "please select atleast one value" when i entry the value in any of the one fields the form should get submitted i have tries the following code but its not working 



    <script type="text/javascript"> 
     function validatefleid() 
     { 
    var computername=document.myform.computername.value; 
    var monitorname=document.myform.monitorname.value; 
    var tvname=document.myform.tvname.value; 
    var laptopname=document.myform.laptopname.value; 
    var cellphonename=document.myform.cellphonename.value; 
    if((computername==null || computername=="") && (monitorname==null || monitorname=="") && (tvname==null || tvname=="") && (laptopname==null || laptopname=="") && (cellphonename==null || cellphonename=="")) 
    { 
     alert("Please atleast one value"); 
     return false; 
    } 

     } 


    </script> 

    <form name="myform" onsubmit="return validatefleid()"> 


    computer<input type="text" class="form-control inpt-bx-txtclr-home" name="computername" id="computerid" placeholder="000"> 
    monitor<input type="text" class="form-control inpt-bx-txtclr-home" name="monitorname" id="monitorid" placeholder="000"> 
    tv<input type="text" class="form-control inpt-bx-txtclr-home" name="tvname" id="tvid" placeholder="000"> 
    laptop<input type="text" class="form-control inpt-bx-txtclr-home" name="laptopname" id="laptopid" placeholder="000"> 
    cellphone<input type="text" class="form-control inpt-bx-txtclr-home" name="cellphonename" id="cellphoneid" placeholder="000"> 

    <button type="submit" >Calculate</button> 

    </form> 
2

沒有jQuery的:

https://jsfiddle.net/uL28jsf9/

<script type="text/javascript"> 
function validatefleid() 
{ 
    var allFieldsNames = ['computername', 'monitorname', 'tvname', 'laptopname', 'cellphonename']; 

    var checkIfFieldEmpty function(fieldName) { 
     var fieldValue = document.myform[fieldName].value; 

     return fieldValue === "" || fieldValue === null 
    } 

    var allFieldsEmpty = allFieldsNames.every(checkIfFieldEmpty); 

    if (allFieldsEmpty) { 
    alert("Please atleast one value"); 
    return false; 
    } 
    else { 
    alert("I'm ok with that !") 
    } 
} 
</script> 
1

這裏是一個完整的跨瀏覽器版本工作validatefleid函數的使用。

function validatefleid(){ 
    var inputIds = ['computerid','monitorid','tvid','laptopid','cellphoneid']; 
    var hasEnteredAnyValue = false; 

    for(var i=0;i<inputIds.length;i++){ 
     hasEnteredAnyValue = document.getElementById(inputIds[i]).value; 

     if(hasEnteredAnyValue)break;   
    } 

    if(!hasEnteredAnyValue) 
    { 
     alert("Please atleast one value"); 
     return false; 
    } 
}