2016-01-21 12 views
6

Chcę wiedzieć, czy możliwe jest uderzenie zdarzenia, jeśli znak okresu . został usunięty z pola tekstowego. na przykład mam tekstowe #Quantity która przyjmuje wartości numeryczne jako wejście z okresu znakjak sprawdzić, czy znak okresu (.) Został usunięty ze słowa w polu tekstowym w jQuery?

enter image description here

i mam rozwijanej kontroli #unitValue które mają trzy opcja

I udało się trafić zdarzenie w okresie podpisać . naciśnięcie klawisza następująco

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

teraz chcę włączyć opcję "Gram" w menu rozwijanym, jeśli znak okresu . został usunięty z pola tekstowego. Mam pomysł, ale nie wiem, czy to słuszne. Idea jest: - Na każdym naciśnięciem klawisza dodać każdą literę na tablicy, a następnie na prasie klawisz Backspace, sprawdzić, czy list na indeks tablicy jest okres znak . lub jeśli nie jest to . znak następnie włączyć w „gram”

Każda pomoc będzie mile widziane

Dziękuję

+0

Hi potrzebna nieco większa jasność – Help

+0

'onfocusout' sprawdzić, czy wartość pola tekstowego mieć' .' czy nie. i ustaw atrybut, aby włączyć lub wyłączyć. –

Odpowiedz

5

JS Fiddle - updated - użyciu .prop() zamiast

// 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>


EDIT: Dzięki @SarathChandra dodaje te kilka linii:

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

Aby go naprawić, kiedy wprowadzona wartość nie zawiera . i Gram został wybrany WTEDY okres był dodać, że resetuje rozwijanej.

+0

@SarathChandra, dziękuję za poprawę! –

0

proponuję przechowywania poprzednią wprowadzony tekst i porównać go do rzeczywistego tekstu na wejściu:

... 
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

Można to wykorzystać.

$(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>

Powiązane problemy