2016-02-09 285 views
0

在我的html結構中,我有加號,減號和輸入字段。當我的輸入字段有任何變化時,我想提醒'change occured'。所以,當我通過輸入或使用向上或向下箭頭更改輸入框中的值時,它會給我一個警報。但是當我點擊帶有類加號或減號的錨點標記時,我寫了一些代碼來更改輸入字段的值。所以,當我使用定位標記時,值正在改變,但是沒有觸發改變函數。因此沒有得到任何警報。所以,任何人都可以讓我知道爲什麼改變不在這裏工作。jQuery .change()不起作用

HTML

<div class="quantity"> 
    <a href="javascript:void(0)" class="minus">-</a> 
    <input type="number" step="1" name="quantity" value="2" title="Qty" class="input-text qty text" size="4"> 
    <a href="javascript:void(0)" class="plus">+</a> 
</div> 

JQuery的:

$(".plus").click(function() { 
    var text = $(this).prev("input"); 
    var va = parseInt(text.val(), 10) + 1; 
    text.attr('value',parseInt(text.val(), 10) + 1); 
}); 

$(".minus").click(function() { 
    var text = $(this).next("input"); 

    if(text.val() > 0){ 
     var va = parseInt(text.val(), 10) - 1; 
     text.attr('value',parseInt(text.val(), 10) - 1); 
    } 
}); 

jQuery來檢測輸入的變化:

jQuery(document).ready(function($) { 
    $(document).on('change', '.quantity .qty', function() { 

     alert('change occurred'); 
    }); 
}); 

我已經試過

我已經試過了:.trigger('change')並且還使用了鍵控和輸入,但沒有任何幫助。

回答

1

FIDDLE

更改您的代碼如下。您需要trigger() a .change()事件。

$(".plus").click(function() { 
    var text = $(this).prev("input"); 
    var va = parseInt(text.val(), 10) + 1; 
    text.attr('value',parseInt(text.val(), 10) + 1); 
    text.trigger("change"); 
}); 

$(".minus").click(function() { 
    var text = $(this).next("input"); 

    if(text.val() > 0){ 
     var va = parseInt(text.val(), 10) - 1; 
     text.attr('value',parseInt(text.val(), 10) - 1);  
     } 
     text.trigger("change"); 
}); 
+0

嘗試過之前。但不適用於我的情況。 –

+0

檢查小提琴,它的工作。你可能會錯過你的一面。 – Hemal

+0

在演示中效果很好。但在我的直播網站上可能有問題。你可以請看看產品添加到購物車部分:http://thejobupdates.com/pt/masonbaker/shop/ –

2

當元素值以編程方式更新時,未觸發change事件。在這種情況下,你需要手動觸發事件:

$(".plus").click(function() { 
    var $text = $(this).prev("input"); 
    var value = parseInt($text.val(), 10) + 1; 
    $text.val(value).change(); 
}); 

$(".minus").click(function() { 
    var $text = $(this).next("input"); 
    var value = parseInt($text.val(), 10) - 1; 
    $text.val(Math.max(0, value)).change(); 
}); 

Example fiddle

注意,它被認爲是更好的做法,與input類型時,在設置attr()使用val()

+0

感謝您的回答。但它不適用於我的情況。 –

+0

這是爲什麼?正如你從演示中看到的那樣,它應該工作正常。如果你實際上可以提供一些細節,比如錯誤,我可以提供一些幫助。 –

+0

這在演示中效果很好。但在我的直播網站上可能有問題。你可以看看產品添加到購物車部分:http://thejobupdates.com/pt/masonbaker/shop/ –

0

試試這個..的

開始觀察 '輸入' 事件而不是 '變'。

jQuery('#some_text_box').on('input', function() { 
// do your stuff 
}); 

OR

jQuery('#some_text_box').on('input propertychange paste', function() { 
// do your stuff 
}); 
相關問題