2016-01-21 145 views
6

我想知道這是否是可能的,如果期間跡象.從文本刪除打的事件。 例如我有一個文本框#Quantity這需要數值作爲輸入與週期符號如何檢查句號(。)是否從jQuery文本框中的單詞中刪除?

enter image description here

和我有一個下拉控制#unitValue,其具有三個選項

我已經成功擊中週期的事件簽署.按鍵如下

$("#Quantity").keypress(function(e) { 
    if(e.which == 46) { 
     //successfully disabled Gram in Unit 
    } 
}); 

現在我想如果週期符號.從文本框中取出,以便能夠在下降「革蘭氏陰性」選項下。 我有一個想法,但不這樣做,如果這是正確的。 思想是: - 上的任意鍵按下每個字母添加到一個數組,然後在退格鍵按壓,我檢查是否在陣列索引字母是週期符號.與否,如果它是,則.標誌使能在「革蘭氏陰性」

任何幫助將不勝感激

謝謝

+0

嗨需要一些更清晰 – Help

+0

'onfocusout'檢查文本框的值有'.'與否。並將屬性設置爲啓用或禁用。 –

回答

5

JS Fiddle - updated - 使用.prop()代替

// attach the functionality on multi events 
 
$('#inpt').on('keypress input change', function() { 
 
    var Gram = $('#slct').children('[value="1"]'); 
 

 
    // if the indexOf "." is > -1, then there's a dot 
 
    if ($(this).val().indexOf('.') > -1) { 
 

 
    // disable the Gram option 
 
    Gram.prop('disabled', true); 
 

 
    // ====================== this part was added by @SarathChandra 
 
    // reset the drop down if Gram option was selected 
 
    if ($('#slct').val() === "1" || $('#slct').val() === null) { 
 
     $('#slct').val("0"); 
 
    } 
 
     // ====================== @SarathChandra Thank you for the improvement 
 

 
    } else { 
 

 
    // if it the dot was removed, we set the disabled prop to false 
 
    Gram.prop('disabled', false); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<input id="inpt" type="text"> 
 
<select id="slct"> 
 
    <option value="0">- select -</option> 
 
    <option value="1">Gram</option> 
 
    <option value="2">Kilo</option> 
 
    <option value="3">Quntal</option> 
 
</select>


編輯:由於@SarathChandra添加了這幾行:

if($('#slct').val() == "1" || $('#slct').val() == null){ 
     $('#slct').val("0"); 
} 

要解決它,當輸入的數值沒有包含.,和革蘭氏選擇THEN期爲增加,它重置下拉。

+0

@SarathChandra,謝謝你的改進! –

0

我建議存儲先前輸入的文本,並將其與在輸入的實際文本:

... 
var prevText = ""; 

$("#Quantity").keypress(function(e) { 
    var actualText = $(e.target).text(); 
    if (this.prevText.indexOf(".") !== -1 && actualText.indexOf(".") === -1) { 
     // deleted 
    } 

    this.prevText = actualText; 
}); 
... 
1

JsFiddle Demo

您可以使用此。

$(document).on('keyup paste', '#Quantity', function() {   
 
    if ($(this).val().indexOf('.') > -1) { 
 
    // disable the Gram option 
 
    $('#Unit').children('[value="1"]').prop('disabled', true); 
 
    } else{ 
 
    $('#Unit').children('[value="1"]').prop('disabled', false); 
 
\t } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<input id="Quantity" type="text"> 
 
    <select id="Unit"> 
 
     <option value="0">- select -</option> 
 
     <option value="1">Gram</option> 
 
     <option value="2">Kilo</option> 
 
     <option value="3">Quntal</option> 
 
    </select>

相關問題