2014-01-17 51 views
1

我想調用一個函數時文本框的值改變爲3層或9呼叫功能時,文本框的值= 3或9

不同的功能正在改變此文本字段的值,但我想調用另一個功能時的磁場變化到3或9

值這裏是小提琴演示:http://jsfiddle.net/k3Q9k/20/

現在功能不應該從這些改變字段的值的函數內被調用。決定的功能應該是獨立的。有些事情是這樣的:

JS:

$('.increment').click(function() { 
    var currentValue = $('#category').val(); 
    var incrementedValue = parseInt(currentValue) + parseInt(1); 
    $('#category').val(incrementedValue); 
    // Check function should not be called from here 
}); 

$('.decrement').click(function() { 
    var currentValue = $('#category').val(); 
    var incrementedValue = parseInt(currentValue) - parseInt(1); 
    $('#category').val(incrementedValue); 
    // Check function should not be called from here 
}); 

$('#category').change(function() { 
    // Check function should be called from here because this is an independent function 
    var currentValue = $('#category').val(); 
    if (currentValue == 3 || currentValue == 9) { 
     alert("Got it"); 
    } 
}); 

HTML:

<input type="text" name="category" id="category" value="1" > 
<a href="javascript:void(0);" class="increment" >Increment</a> 
<a href="javascript:void(0);" class="decrement" >Decrement</a> 

注:這是改變我的字段值,這些功能是不是我的訪問。所以我必須寫一個盲目的代碼,這將完全自行決定

回答

5

您已將邏輯綁定到更改事件處理程序,但是當編程更改輸入字段的值時,更改事件不是觸發。那就是問題所在。

一個可能的解決方案是手動觸發更改事件給出如下

$('#category').val(incrementedValue).change(); 

演示值以編程方式更改後:Fiddle

+1

你真快= D這就像你第50次打我答案一樣!我喜歡挑戰! – m59

+0

我不能改變我現有的功能。這個函數應該是獨立的,用於作出決定 –

+0

那些改變我的字段值的函數不能被我訪問。所以我必須寫一個盲端代碼,它將完全自行決定 –

0

你也可以用setInterval來定期檢查TEH值。喜歡的東西:

jsFiddle Demo

HTML:

<input type="text" name="category" id="category" value="1" > 
<a href="javascript:void(0);" class="increment" >Increment</a> 
<a href="javascript:void(0);" class="decrement" >Decrement</a> 

的jQuery/JavaScript的:

$('.increment').click(function(){ 
    var currentValue = $('#category').val(); 
    var incrementedValue = parseInt(currentValue)+parseInt(1); 
    $('#category').val(incrementedValue); 
}); 

$('.decrement').click(function(){ 
    var currentValue = $('#category').val(); 
    var incrementedValue = parseInt(currentValue)-parseInt(1); 
    $('#category').val(incrementedValue); 
}); 

var chk = setInterval(chkValue, 2000); 

function chkValue() { 
    var currentValue = $('#category').val(); 
    if(currentValue==4){ 
     alert("Got it"); 
     clearInterval(chk); 
    } 
} 

需要注意的是日每隔2000毫秒(2秒)檢查一次間隔。您也可以將其設置爲更頻繁的檢查,例如。 500(半秒)。

+0

setInterval不是一個好主意 –