2010-01-06 87 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状态。