2014-10-16 45 views
0

如果至少有一個輸入元素具有值,則需要啓用按鈕(以及可能在不久的將來表單上的其他元素)。我使用BootstrapValidator作爲主要驗證庫,因爲我使用的是Twitter Bootstrap,但沒有想法,以簡單的方式實現此目的。我所知道的是一個,例如檢查每個輸入一個:如果至少有一個輸入有值,則啓用按鈕(或任何元素)

if ($('.some_input').length > 0) { // then do actions } 

但是,如果我有很多領域的解決方案,這似乎是乏味和並不很實用,我也需要一些很多事件觸發例如:keypress,keyup,​​,blur或許也有其他人(根本不清楚)。

現在的形式非常簡單,如下圖所示,我的解決方案應該可以工作,但形式會快速成長並在不久的將來,所以我把它留下,我正在尋找另一種解決方案。

2014-10-16_11-16-24

這裏按鈕「Buscar」(它的IMG啓用,但不關心這個,我錯過殘疾人當我拿着screenshoot)應啓用只有當任何形式的輸入(Codigo de la Norma,Añode Publicacion,Palabra o Termino que contiene la Norma)具有值並且可能在下面選擇標記的選項具有與默認值不同的值(可以是任何例如 - 選擇一個值= 0)用一個簡單的話來說:任何輸入至少有3個字符最小值,SELECT中的選擇應該與默認值不同,我該怎麼做?

+0

而不是使用關鍵事件的使用jQuery的'$( 'commonclass。 ')上(' 變',函數(){處理這裏});' – makhan 2014-10-16 19:31:26

回答

2

$(function() { 
 
      $(':text').on('input', function() { 
 
       if($(':text').filter(function() { return !!this.value; }).length > 0) { 
 
        $('button').prop('disabled', false); 
 
       } else { 
 
        $('button').prop('disabled', true); 
 
       } 
 
      }); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form> 
 
First name: <input type="text" name="firstname"><br> 
 
Last name: <input type="text" name="lastname"><br> 
 
    <button disabled="disabled">Submit</button> 
 
</form>

更新

擴大這一所以它與其他形式的元素(不含radioschecks)你可以改變:text:input。和代碼可以縮短到以下情況:

$(function() { 
    $(':input').on('input', function() { 
     var completed = $(':input').filter(function() { return !!this.value; }).length > 0; 
     $('button').prop('disabled', !completed); 
    }); 
}); 
+0

這幾乎工作,但缺少SELECT行爲,以檢查SELECT是否已從默認值更改爲任何其他選項,我可以使用與上述文章中提到的相同的「change」事件,但如何適合您的解決方案? – ReynierPM 2014-10-16 19:40:47

+0

只要將':text'改成':input',那就應該這樣做! – PeterKA 2014-10-16 19:41:52

+0

不,我改變了,它不起作用 – ReynierPM 2014-10-16 19:43:57

1

input每個元件有一個事件稱爲change連接到它。我會添加一個函數來完成這個任務。

如果你真的要運行的代碼,只要甚至一個字母被添加到一個領域,你可以改用稱爲input事件(請務必雖然檢查的任何像這樣的代碼的性能,因爲這將是觸發了很多!)

雖然,input事件的瀏覽器支持比change少得多。

$('input.some_input').on('change', function() { 
 
    if ($(this).val().length > 0) { 
 
    alert('woot! text!'); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input class='some_input' value='test' />

相關問題