2014-03-02 72 views
0

我已經有一個表單上的字段,當它填充它調用ajax調用。AJAX調用JQuery加載函數

ajax調用填寫表單的其他領域罰款和一切。

但我已經有了他們領域的一些功能後,我點擊這些領域他們唯一的工作..

$('#lista').on('keypress keydown keyup change',function(){ 
    var qtd_itens = $('#lista tbody').children('tr').length + 1; 
    somatotal = 0; 
    for ($i = 0; $i < qtd_itens; $i++) { 
     acho = new String($(':input[name="qtd' + $i + '"]').val()), 
    alto = new String($(':input[name="preco' + $i + '"]').val()); 
    acho = acho.replace(',', '.'); 
    alto = alto.replace('.', ''); 
    alto = alto.replace(',', '.'); 
     v = 0; 

     if (!isNaN(acho) && !isNaN(alto)){ 
      v = parseFloat(acho*alto,2); 
     } 
     $(':input[name="total' + $i + '"]').val(formatter.format(v)); 
    somatotal += v; 
    $(':input[name="valortotal"]').val(formatter.format(somatotal)); 
    } 
}); 

我知道這種情況正在發生,因爲我使用的是在('按鍵的keydown KEYUP改變'事件,但是,有沒有辦法,當ajax調用被稱爲這已經做了這項工作,沒有我點擊字段?

+0

目前還不清楚你問的是什麼問題。你是用ajax加載內容,然後發現事件處理程序不在新內容上工作嗎?或者是其他東西? – jfriend00

+0

他們實際上正在工作..但我需要點擊他們的字段來格式化數字,因爲我正在使用點擊事件。我希望當我用ajax加載內容時,他們已經在不點擊它的情況下完成了這項工作。 – ledesma

+0

使用onclick事件做什麼?您的問題中沒有與onclick事件有關的任何代碼。 – jfriend00

回答

0

更改事件不會觸發當您以編程方式更改字段如果您想要代碼在你用ajax調用編程填充字段後運行,那麼你將不得不把你的代碼放到一個函數中,然後在thos上調用它在您從ajax調用中將新數據添加到它們後的e字段。

例如,您可以更改您的代碼如下:

$('#lista').on('keypress keydown keyup change', itemsModified); 

function itemsModified(){ 
    var qtd_itens = $('#lista tbody').children('tr').length + 1; 
    somatotal = 0; 
    for ($i = 0; $i < qtd_itens; $i++) { 
     acho = new String($(':input[name="qtd' + $i + '"]').val()), 
     alto = new String($(':input[name="preco' + $i + '"]').val()); 
     acho = acho.replace(',', '.'); 
     alto = alto.replace('.', ''); 
     alto = alto.replace(',', '.'); 
     v = 0; 

     if (!isNaN(acho) && !isNaN(alto)){ 
      v = parseFloat(acho*alto,2); 
     } 
     $(':input[name="total' + $i + '"]').val(formatter.format(v)); 
     somatotal += v; 
     $(':input[name="valortotal"]').val(formatter.format(somatotal)); 
    } 
) 

,在此之後你的AJAX調用填充字段手動調用itemsModified()


我還沒有嘗試過這個自己,但也可能是你能留下你的代碼原本它和你的Ajax調用在新值填充後,撥打方式:

$('#lista').trigger("change"); 

這將手動觸發更改事件並導致您的更改處理程序執行格式設置。

+0

你能舉個例子嗎?它已經是一個函數..但是如何在填充後調用函數? – ledesma

+0

@GilbertoGonçalvesMachado - 查看最新編輯。 – jfriend00

+0

@GilbertoGonçalvesMachado - 僅供參考,它肯定看起來像函數中的一些變量需要在它們前面有'var',因此它們是局部變量而不是隱式全局變量。 – jfriend00