AJAX 调用后 HTML 选择不起作用

Posted

技术标签:

【中文标题】AJAX 调用后 HTML 选择不起作用【英文标题】:HTML select not working after AJAX call 【发布时间】:2017-05-10 03:24:17 【问题描述】:

这是直接的 html/javascript。该页面在单独执行时工作正常,但通过 AJAX 调用它在 IE11 上不起作用。 单击主页上的“显示”按钮后,它会打开一个带有选项的列表,从 XML 文件中读取;它接受双击以选择一个项目,并在警报框中显示选定的数字。 (它还将这个值写入 java 属性文件)。在 Chrome 和 FF 上它可以按预期工作,但在 IE11 中不行。 在 IE 上它拒绝选择任何项目。 AJAX 的返回页打开一个具有绝对定位和拖动可能性的 div。在我将带有列表的框拖到另一个地方后,它突然在 IE 中也可以工作(但仅在拖动多个像素之后)。 我只能假设它是 IE11 中的一种错误,但有解决方法吗?为什么拖动框会起作用?

这是重要的代码:

在 main.jsp 中:

<span id='showcurevent' onclick='showevent(<%=EVENTID%>, 0)'>Show </span>

<div id='Qevents' class='drag' ></div>

  <script>
function showevent(nr, curevent) 
    var eventdiv=document.getElementById('Qevents');
   var url="AJAX1.jsp?xml=<%=XMLfile%>&index="+nr+"&curevent="+curevent;
    sendAjaxRequest(url, callback1);


function callback1(pushtext) 
    var eventdiv=document.getElementById('Qevents');
    eventdiv.innerHTML=pushtext;
    eventdiv.style.visibility='visible';

在 AJAX1.jsp 文件中:

<table><tr>
  <td><select id='sel' size=10 ondblclick='SetSelectedEvent(this.value)'>
    <option value='1'>1 text1</option>
    <option value='2'>2 text2</option>
        etc, several more ...
  </select></td></tr>
</table>

在 main.jsp 文件中:

function SetSelectedEvent(nr) 
    var url="AJAX2.jsp?props=<%=propsFile%>&event="+nr;
    sendAjaxRequest(url, callback2);

function callback2(pushtext) 
    var number = pushtext.substring(pushtext.indexOf("Value selected=")+15,pushtext.indexOf("</body"));
    alert('value Selected: '+number);

在 AJAX2.jsp 中:

<%
String eventnr=request.getParameter("event");
%> Event selected=<%=eventnr%>
</body>

AJAX1和AJAX2其实是同一个文件,只是代码的不同部分,由request.parameter()的值来选择。

AJAX 代码本身位于单独的 .js 文件中:

function sendAjaxRequest(url, callback) 
  var xmlHttp=new XMLHttpRequest();
   if (xmlHttp==null)  // browser does not support AJAX
      return;
   
   xmlHttp.onreadystatechange=function() 
      if (xmlHttp.readyState==4 && xmlHttp.status == 200)  
         callback( xmlHttp.responseText);
        
    
   xmlHttp.open("GET",url,true);
   xmlHttp.send(null);

【问题讨论】:

onclick='showevent(, 0)'> 如果是字符串,可能应该是 onclick='showevent("", 0)'>而不是变量 事件选择= 也缺少引号 事件选择= ? 都是数字(参见: 无论如何我都试过了,但没什么区别。 【参考方案1】:

好的,我找到了问题,是拖动程序劫持了功能。 当我禁用拖动时,它起作用了。 我现在更改了拖动功能以检查光标是否在输入或选择标签上,并在该点禁止拖动。 感谢所有对此进行调查的人。

【讨论】:

以上是关于AJAX 调用后 HTML 选择不起作用的主要内容,如果未能解决你的问题,请参考以下文章

ajax调用后div中的日期选择器不起作用

在ajax调用中附加tbody后点击事件不起作用?

ajax调用后tablesorter文本提取不起作用

ajax调用后使用jQuery插入记录不起作用

jQuery tablesorter 插件在 AJAX 调用后不起作用

完整功能中的ajax调用后刷新jquery mobile listview不起作用