【问题标题】:javascript html not working on chromejavascript html在chrome上不起作用
【发布时间】:2013-12-21 04:50:44
【问题描述】:

我正在编写此代码以显示客户端列表并单击它以填充具有所选名称的文本字段和隐藏的 id 文本字段。

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>

Onchange 它使用 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 选择客户端

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

我的问题是: 这不适用于 Chrome,但在 IE 上运行良好。 有人知道我在这里想念什么吗?

感谢您的帮助。

【问题讨论】:

  • 如果您使用 jQuery,为什么要使用 XMLHttpRequest 的普通 AJAX 方法?

标签: javascript php jquery html google-chrome


【解决方案1】:

那是无效的 html。您不能将锚标记包裹在 TR 周围。

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

【讨论】:

  • 我会坚持你的最终建议来保留锚点,因为锚点是通过键盘工作的。没有内置点击行为的元素上的点击处理程序是可访问性失败...
【解决方案2】:

&lt;tr&gt; 中不能有&lt;a&gt; 标签。所以试试&lt;tr&gt;的Onclick

试试这个

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

【讨论】:

    【解决方案3】:

    我认为您在代码中提到的锚标记是问题,请纠正它并

    回显该值,然后您就会清楚地了解它。

    【讨论】:

    • 所以您对 O​​P 问题的回答是他们应该“纠正它”?能不能说的具体一点?
    【解决方案4】:

    试试这个并将您的&lt;a&gt; 放入&lt;td&gt;

    echo '<tr><td class="cap">
          <a onClick="selectClient(\''.$fullname.'\',\''.$row[0].'\')">'.$fullname.'</a>
          </td></tr>';
    
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签