2013-12-21 51 views
0

我正在处理这段代码以显示客户端列表,并且点击它使用所选名称和隐藏文本字段填充文本字段。JavaScript html不能在铬上工作

HTML

<input type="hidden" id="id" value="" /> 
<input type="text" name="client" id="client" class="round full-width-input" value="Type a name..." onChange="searchClient()" onkeypress="this.onchange();" onpaste="this.onchange();" oninput="this.onchange();" onfocus="if(this.value=='Type a name...') {this.value=''}" onblur="if(this.value == ''){this.value='Type a name...'; document.getElementById('search_results').innerHTML = '';}" /> 
<label style="margin:0 0 0 1%"><i id="search_results"></i></label> 

平变化它使用JavaScript调用PHP文件。

的Javascript

function searchClient() 
{ 
    var str = document.getElementById("client").value; 
    if (str == "") 
     { 
      document.getElementById("search_results").innerHTML = ""; 
      return; 
     } 
    if (window.XMLHttpRequest) 
     { 
      // code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp = new XMLHttpRequest(); 
     } 
    else 
     { 
      // code for IE6, IE5 
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
    xmlhttp.onreadystatechange=function() 
     { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 
      document.getElementById("search_results").innerHTML = xmlhttp.responseText; 
     } 
     } 
    xmlhttp.open("GET","search_client.php?name="+str,true); 
    xmlhttp.send(); 
    } 

PHP文件时返回列表,并填充标签。以下是从PHP文件返回的内容

echo '<a onClick="selectClient('.$fullname.','.$row[0].')"> 
<tr><td class="cap">'.$fullname.'</td></tr></a>'; 

然后我可以点击列表并再次调用javascript来填充文本字段。

的Javascript selectClient

function selectClient(name,id) 
{ 
    document.getElementById("id").value = id; 
    document.getElementById("client").value = name; 
    document.getElementById("search_results").innerHTML = ""; 
} 

我的问题是: 这不是工作在Chrome,但工作得很好IE。 任何人都知道我在这里错过了什么?

感谢您的帮助。

+1

如果您使用的是jQuery,为什么要使用XMLHttpRequest的AJAX方法? – j08691

回答

3

这是无效的html。你不能有一个锚定标签缠绕TR。

将onclick添加到TR并摆脱锚点,或移动td内的锚点。

+0

我会坚持你最后的建议来保持锚,因为锚从键盘上工作。对没有内置点击行为的元素点击处理程序是可访问性失败... – nnnnnn

0

<tr>中不能有<a>标签。因此,尝试在ONCLICK的<tr>

与此

echo '<tr><td onClick="selectClient('.$fullname.','.$row[0].')" class="cap">'.$fullname.'</td></tr>'; 
0

我觉得你在你的代码中提到的锚标记是正确的问题它和

回声的价值,那么你会得到一个清晰的想法。

+0

所以你对OP的问题的答案是他们应该“纠正它”?你能更具体一点吗? – nnnnnn