2014-10-24 1 views
0

У меня есть действие нажатия кнопки, на которое я делаю вызов AJAX для обновления поля. После того, как АЯКС возвращается, я делаю это -Повторная загрузка страницы на возврате AJAX теряет фокус на кнопке

 document.location.reload(true); 

перезагружается страница, однако, фокус не возвращается к кнопке. Можете ли вы предложить средство, где я могу перезагрузить/обновить страницу, и фокус возвращается на кнопку, чтобы снова щелкнуть?

Я обновил свой код AJAX здесь, скажите, пожалуйста, как изменить это -

<input type="button" name="IncreaseMyDate" id="myDate" value="Increase" onclick="updateMyDate('<%=myDate%>')"/> 


    function updateMyDate(mywDate) 
{ 
    XMLHttpObj_myDate = CreateHttpObject(); 

    if(XMLHttpObj_myDate == null){ 
     alert("HTTP Request not supported"); 
     return; 
    } 

    var itemId = document.getElementById("itemId").value; 

    document.getElementById("myDate").setAttribute("disabled",true) ; 
    var url ="IncreaseMyDate.jsp?action=update&myDate="+reviewDate; 

    document.getElementById("myDate").style.cursor = "not-allowed"; 
    XMLHttpObj_myDate.onreadystatechange=fillMyDate; 
    XMLHttpObj_myDate.open("GET",url); 
    XMLHttpObj_myDate.send(null); 

    return false; 

} 



function fillMyDate(){ 
    if(XMLHttpObj_reviewDate.readyState == 4 || XMLHttpObj_myDate.readyState == "complete"){ 
     document.getElementById("myDate").style.cursor = "pointer"; 
     document.getElementById(myDate").innerHTML = XMLHttpObj_myDate.responseText; 

    document.location.reload(true); 
    }  
} 

ответ

0

Почему вы делаете перезагрузки страницы? Большим преимуществом создания Ajax-звонков является то, что они избегают необходимости перезагрузки страницы. Вы можете просто выполнить всю работу сервера Ajax при перезагрузке страницы.

Вам нужно передать переменную на новую загрузку страницы, которая указывает, какая кнопка должна иметь фокус. Ваша перезагрузка страницы не знает о том, что происходит на стороне клиента раньше. Передайте идентификатор кнопки в строке запроса, а затем используйте его, чтобы снова найти кнопку и установить фокус.

0

Вы можете сохранить идентификатор кнопки в sessionStorage, а затем проверить, когда страница загружается, чтобы повторно применить фокус, если это применимо.

Следующая страница работала в моих тестах:

<body onload="body_onload();"> 
<button id="buttonA" onclick="button_click(this);">Button A</button><br/> 
<button id="buttonB" onclick="button_click(this);">Button B</button><br/> 
<button id="buttonC" onclick="button_click(this);">Button C</button><br/> 
</body> 

<script> 
    function body_onload() { 
     var buttonId = sessionStorage["buttonId"]; 
     if (buttonId) { 
      document.getElementById(buttonId).focus(); 
     } 
    } 
    function button_click(button) { 
     sessionStorage["buttonId"] = button.id; 
     document.location.reload(true); 
    } 
</script> 
Смежные вопросы