2013-12-21 3 views
0

나는이 코드를 사용하여 클라이언트 목록을 표시하고 onclick은 선택한 이름과 id의 숨겨진 텍스트 필드로 텍스트 필드를 채 웁니다. 이 PHP 파일을 호출하는 자바 스크립트를 사용 onchange를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> 

.

자바 스크립트

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>'; 

에서 반환하고 텍스트 필드를 채우기 위해 다시 자바 스크립트를 호출 뭐죠 아래입니다. 이것은 크롬에서 작동하지 않는 하지만, IE 잘 작동 :

자바 스크립트 selectClient

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

내 문제입니다. 누구나 내가 뭘 놓치고 있는지 알 수 있습니까?

도움 주셔서 감사합니다.

+1

jQuery를 사용하는 이유는 왜 XMLHttpRequest의 긴 AJAX 메소드를 사용하고 있습니까? – j08691

답변

3

그건 잘못된 HTML입니다. TR 주위에 앵커 태그를 감쌀 수 없습니다.

TR에 onclick을 추가하고 앵커를 제거하거나 앵커를 td 내부로 이동합니다.

+0

앵커가 키보드에서 작동하기 때문에 나는 앵커를 유지하라는 마지막 제안을 계속 할 것입니다. 클릭 동작이 내장되어 있지 않은 요소의 클릭 핸들러는 접근성 오류가 발생합니다 ... – nnnnnn

0

<a> 태그는 <tr>에 사용할 수 없습니다. 그래서 당신은 당신의 코드에 언급 된 앵커 태그가 올바른 문제라고 생각하여 <a><td>

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

에 이것을 시도하고 넣어이

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

OP의 문제에 대한 대답은 "정정해야"한다는 것입니다. 좀 더 구체적으로 부탁 드릴 수 있습니까? – nnnnnn

관련 문제