2016-10-25 69 views
-2

我有一個代碼,我通過調用函數與下面的代碼如何啓用和禁用基於某些限定條件

<input type=submit value=SUBMIT onclick=report_submit()> 

我希望按鈕最初只有禁用提交的提交按鈕如果我的所有輸入都不爲null,則啓用。

表單提交後,我希望再次禁用按鈕,以避免重複插入。

我嘗試過堆棧溢出的其他例子,但是它是永久啓用或禁用。

+0

您不妨關注一下變量變化,以確定何時可以啓用/禁用輸入...在這裏看到:http://stackoverflow.com/questions/1759987/listening-換可變變化-中的JavaScript或 - jquery的。此外,這種事情是在像AngularJS這樣的框架中進行的。 –

+0

@AdrianC。在這個問題中沒有指定jQuery。 –

+0

@DanielShillcock哦,是的,你說得對。 document.getElementById('theInput')。disabled = true; –

回答

1

當用戶鍵入或更改選擇它時,檢查表單以查看是否所有輸入都有值,如果不是,則它會再次禁用該按鈕。另外如果有興趣Array.prototype.slice()

function enableSubmit() { 
 
    
 
    // counts the elments of inputs with values 
 
    var i = 0; 
 
    Array.prototype.slice.call(document.forms["form"].elements).forEach(function(e) { 
 
    if (e.value) { 
 
     i++; 
 
    } 
 
    }); 
 
    
 
    // if all the elements have a value enabled the submit button 
 
    if (i === (document.forms["form"].elements.length - 1)) { 
 
    document.getElementById('disabled').disabled = false; 
 
    } else { 
 
    document.getElementById('disabled').disabled = true; 
 
    } 
 
}; 
 

 
// add a event listener to each tag require (were using input and select) 
 
Array.prototype.slice.call(document.forms["form"].elements).forEach(function(e) { 
 
    if (e.tagName === 'INPUT') { 
 
    e.addEventListener("keyup", function(e) { 
 
     enableSubmit(); 
 
    }, false); 
 
    } else if (e.tagName === 'SELECT') { 
 
    e.addEventListener("change", function(e) { 
 
     enableSubmit(); 
 
    }, false); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form name="form" method="post"> 
 
    <input id="text" name="text" type="text" /> 
 
    <select id="options" name="options"> 
 
    <option value></option> 
 
    <option value="1">Option 1</option> 
 
    </select> 
 
    <input type="submit" id="disabled" disabled="disabled" /> 
 
</form>

+0

最好添加事件偵聽器,而不是使用侵入式JavaScript。如果有不需要的字段,這將不起作用。 –

+0

爲事件偵聽器添加了JavaScript。這個問題從來沒有問到關於必填字段的問題,只是要求在所有輸入不爲空時禁用並啓用提交按鈕。 – thekodester

1

kodecount提醒我,這基本特徵是不跨瀏覽器(即野生動物園看到this)100%。

爲什麼不在每個輸入上使用required屬性並將其稱爲一天。只要您的required輸入沒有任何值,您可以單擊該提交按鈕一千次,並且在required的每個輸入都具有值之前,它將永遠不會被允許執行任何操作。沒有JS,沒有CSS,只有HTML。

<form id='f1' onsubmit='nullCheck()'> 
 
    <input name='i1' required> 
 
    <br/> 
 
    <input name='i2' required> 
 
    <br/> 
 
    <input name='i3' required> 
 
    <br/> 
 
    <input name='i4' required> 
 
    <br/> 
 
    <input type='submit'> 
 
</form> 
 
<form id='f2' onsubmit='nullCheck()'> 
 
    <input name='i5' required> 
 
    <br/> 
 
    <input name='i6' required> 
 
    <br/> 
 
    <input type='submit'> 
 
</form>

+0

這不適用於所有瀏覽器,但[表單驗證](http://www.formvalidator.net/)是用戶可以採用的另一種方法。 – thekodester