2011-05-30 125 views
0

我在我的代碼中遇到了麻煩, 我想通過單擊按鈕發送一個ajax請求, 但是請求會自動運行,即使我不單擊按鈕, 這裏是我的代碼:dojo框架 - 事件不起作用

<script type="text/javascript"> 

function set(mode) { 

    var nomor_awal = dojo.query("input[name=nomor_awal]"); 
    var nomor_akhir = dojo.query("input[name=nomor_akhir]"); 

    var validGetUrl = ""; 

    validGetUrl += "nomor_awal="+objNomorAwal.attr("value")+"&"; 
    validGetUrl += "nomor_akhir="+objNomorAkhir.attr("value"); 

    dojo.xhrPost({ 
     url:"<?php echo base_url(); ?>register_perkara/pidana_biasa/"+mode+"/", 
     content:{ 
      filter:validGetUrl 
     }, 
     load:function(response){ 
      (response!="1")? document.location = window.location: null; 
     } 
    }); 
} 

dojo.ready(function(){ 
    dojo.connect(dojo.query("input[name=filter]"), "onclick", set("set_filter")); 
} 

</script> 



<table> 
<tr> 
    <td><label for="nomor_awal">Nomor awal</label></td> 
    <td><input type="text" name="nomor_awal" size="8" value="" /></td> 
</tr> 
<tr> 
    <td><label for="nomor_akhir">Nomor akhir</label></td> 
    <td><input type="text" name="nomor_akhir" size="8" value="" /></td> 
</tr> 
<tr> 
    <td colspan="2"><input type="button" name="filter" /></td> 
</tr> 
</table> 

我不要點擊過濾器按鈕,但自動執行功能,爲什麼呢?

回答

2

我不知道道場,但此行

dojo.connect(dojo.query("input[name=filter]"), "onclick", set("set_filter")); 

執行set功能,並傳遞返回值dojo.connect

你必須傳遞函數,而不是調用它。所以我很確定你想要的:

dojo.connect(dojo.query("input[name=filter]"), "onclick", function() { 
    set("set_filter"); 
}); 
+0

下襬,感謝,但它的工作不晚:( – valazeroth 2011-05-30 10:36:26

+1

我想你的代碼,但我改變了代碼一點 和alhamdulillah它的工作:d 非常感謝很多:d 代碼: 'dojo.connect(dojo.query( 「輸入[名稱=濾波器]」)[0], 「點擊」,功能(EVT){ 集( 「set_filter」);} );' – valazeroth 2011-05-30 10:40:15

+0

@Val:正如我所說,我不知道道場,但這是爲什麼該函數立即執行的原因。我很高興你想出了它:)不要忘記接受這個答案if它他(通過點擊旁邊的勾號輪廓)。 (); set(「set_filter」); – 2011-05-30 11:28:25