2010-01-06 91 views
1

我遇到了一些Javascript的麻煩,希望有人可以幫助! 首先,這裏是代碼:在Firefox的php jquery錯誤

function Client_Selected() { 
    var temp = $("input:radio[name='selected_client']:checked").val(); 
    var f_input_name = "fname_" + temp; 
    var l_input_name = "lname_" + temp;  
    var first = $("input[name='"+f_input_name+"']").val(); 
    var last = $("input[name='"+l_input_name+"']").val(); 
    var content = first + " " + last; 
    var thispage = $("input[name='current_page']").val(); 

    // Now Load the Notes!!! 
    dataString = 'web_id='+temp+'&Section='+thispage; 
    $.ajax({ 
     type: "POST", 
     url: "<?=URL_SSL_WEBSITE_ROOT?>/notes/loadClientNotesAJAX", 
     data: dataString, 
     success: function(msg) { 
      $("#notes_body").html(msg); 
      $("#note_client_name").html(content); 
     } 
    });   

    $("#button_client_name").html(content); 
    $("#note_client_name").html(content);  
    $("input:radio[name=selected_client]:checked").attr(checked, true); 
}; 

我的問題是與最後一行。 發生了什麼事情,我有一個與單選按鈕關聯的客戶端列表,當單擊一個按鈕時,我會進行AJAX調用以獲取/顯示有關客戶端的信息。如果最後一行不存在,那麼當我選擇第二個客戶端時,它會加載信息,但新客戶端的單選按鈕不會保持檢查狀態,而是保持先前(或第一個)選定的客戶端單選按鈕被選中。

隨着最後一行我得到一個錯誤:「檢查是未定義」

儘管錯誤一切工作和相應的複選框仍處於檢出。然而,昨天firefox的新更新......相應的複選框仍然被選中,儘管我的成功函數從未在ajax調用上運行,並且JavaScript只停留在最後一行。它仍然在IE中工作,但我需要在Firefox中再次運行。 任何想法?我試過改變它: $(「input:radio [name = selected_client]:checked」)。attr('checked',true); 然後成功功能運行,信息填充在我的網頁上,然後我得到新選擇的複選框不保持檢查問題,並保持前一個檢查。

任何幫助,非常感謝。

謝謝

+0

您可以在瀏覽器看到它後顯示代碼,在被PHP解析後? – Anonymous 2010-01-06 14:35:49

+0

它得到的網址(被php解析後)是正確的。 Firebug正在顯示來自ajax調用的正確響應,但是,當它碰到最後一行時它就會凍結。我試着將它改爲('檢查','檢查')...這不會出錯,並且成功函數會運行,但它仍然會恢復到以前的單選按鈕被更改。我可以嘗試告訴它通過單選按鈕的值檢查哪個單選按鈕。有人可以給我的代碼嘗試,我一直無法找到它,因爲我確定它不經常需要!感謝迄今爲止的答案! – Brian 2010-01-06 14:46:22

回答

1

嘗試在ajax調用的成功函數的最後一行。

和使用ATTR( '檢查',真)

+1

$(...)。attr('checked',true) – DmitryK 2010-01-06 14:42:18

1

.attr('checked','checked');會檢查你的checbox /單選框,並.removeAttr('checked'); 來取消它。

1

看起來有些報價是缺少

$("input:radio[name=selected_client]:checked").attr('checked', 'checked'); 
+0

好吧,這不會給我錯誤。但它也沒有保持新選擇的單選按鈕被選中。它仍然回覆到前一個......任何想法?謝謝 – Brian 2010-01-06 14:54:50

1

檢查是不確定的

這當然是。你用過checked; JavaScript正在尋找名爲checked的變量,該變量不存在。你打算用引號將'checked'表示爲一個字符串。

然而,

$("input:radio[name=selected_client]:checked").attr('checked', true); 

不執行任何操作,因爲你正在檢查這從您選擇的定義已經選中一臺收音機。你在做什麼,在這裏?

請注意,如果您在單選按鈕onclick處理程序中執行該操作,則該函數執行過程中的無線電不會是新點擊的那個,它將是之前檢查過的那個。直到onclick事件處理完成,點擊更改檢查實際上纔會完成。如果您想在onclick期間找到新收音機,則必須查看thisevent對象,具體取決於您如何調用該功能。


回覆其他答案:

ATTR( '檢查', '檢查')

我們能不能請停止給了這一點?它有效,但不是因爲你的想法。 jQuery attr()確實不是設置HTML屬性(除了在幾個角落的情況下試圖解決瀏覽器錯誤)。它設置JavaScript屬性,但試圖修復名稱以匹配HTML屬性。所以:

attr('checked', true); 

false爲unsetting,是正確的做法。值'checked'僅適用於評估布爾屬性時的真實性。任何非空字符串都會完全相同。

如果jQuery的組HTML屬性,attr('checked')是行不通的,因爲HTML checked屬性對應於初始設置的複選框(又名defaultChecked)的,當前checkedness狀態。