2014-10-27 42 views
0

我在這裏有ajax/json的jquery代碼。首先我會討論流程。我有3個文本框,我的item文本框通過ajax將它的值傳遞給auto-complete.php以獲取它的詳細信息。返回值是張貼或放入mode文本框。如果帖子值爲1或2,number文本框應該更改爲css到display:none。但問題不起作用,我將number文本框設置爲只讀。當我直接更改number文本框的值時,更改功能正在工作。爲什麼價值是後期價值時不工作?jquery更改後收到ajax後值不起作用

<script> 
$(document).ready(function() { 
$("#number").css("display","none"); 
$(document).on('change','#mode',function(){ 
    if($("#mode").val() =="1"){ 
     $("#number").css("display",""); 
    } else if($("#mode").val() =="2"){ 
     $("#number").css("display",""); 
    } else { 
     $("#number").css("display","none"); 
    } 
    return true; 
    }); 
}); 
</script> 


<input name="item" id="item" type="text"/> 

<input name="mode" id="mode" type="text"/> 

<input name="number" id="number" type="text" readonly /> 

<script type="text/javascript"> 
$(document).ready(function() 
{ 
$('#item').change(function() 
{ 
var item= $("#item").val(); 

$.ajax({ 
type: "POST", 
url: "autocomplete-ajax.php", 
data :"item="+item, 
dataType:'json', 
type:'POST', 
success:function(data){ 
    var mode=data.mode; 
    //send to element ID 
    $('#mode').val(mode); 
} 
    }); 
return false; 
}); 
}); 
</script> 
+3

您需要手動觸發更改事件,因爲您是以編程方式更改值。即。 '$('#mode').val(模式).trigger('change');' – techfoobar 2014-10-27 02:12:38

+0

@techfoobar +1爲您的答案。謝謝! – user3631428 2014-10-27 02:27:33

回答

0

當您使用JavaScript更改值時,它不會觸發事件。

一個簡單的解決方法是在更新值後自行觸發事件。

success:function(data){ 
    var mode=data.mode; 
    //send to element ID 
    $('#mode').val(mode).change(); 
    /* OR */ 
    $('#mode').val(mode).trigger('change'); 
}