выполнять загрузку javascript, а не onchange - PullRequest
0 голосов
/ 03 апреля 2012

У меня есть HTML-форма на странице PHP. Форма имеет различные входные данные. Один из входов имеет событие onchange:

<input size=10  type=number id=sku1 name=sku1 onchange="showUser(1, this.value);showWhse(1, this.value)">

Вызывает следующую функцию:

<script type="text/javascript">  
  function showUser(userNumber, str)  
  {  
    if (str=="")  
    {  
      document.getElementById("txtHint" + userNumber).innerHTML="";  
      return;  
    }    
    if (window.XMLHttpRequest)  
    {// code for IE7+, Firefox, Chrome, Opera, Safari  
      xmlhttp=new XMLHttpRequest();  
    }  

    xmlhttp.onreadystatechange=function()  
    {  
      if (xmlhttp.readyState==4 && xmlhttp.status==200)  
      {  
        //document.getElementById("txtHint" + userNumber).innerHTML=xmlhttp.responseText; 
        var responseText = xmlhttp.responseText;  
        var description = responseText.substring(12, responseText.indexOf(",Warehouse:"));  
        var warehouse = responseText.substring(responseText.indexOf(",Warehouse:")+11, responseText.indexOf(",SellingUnits:"));  
        var sellingUnits = responseText.substring(responseText.indexOf(",SellingUnits:")+14);  

        document.getElementById("whse" + userNumber).innerHTML = warehouse;  
    document.getElementById("txtHint" + userNumber).innerHTML = description;  
    document.getElementById("su" + userNumber).innerHTML = sellingUnits;  
  }  
}  
xmlhttp.open("GET","getdata1.php?q="+str,true);  
xmlhttp.send(); 
} 
</script>

Это работает на 100%. однако, если вход заполняется переменной сеанса, и страница обновляется, как я могу заставить скрипт выполнить снова при загрузке, без события onchange?

так, когда страница посещается впервые, если у входа есть значение, выполнить скрипт?

Ответы [ 3 ]

2 голосов
/ 03 апреля 2012

Просто выполнить функцию onload?

window.onload = function init() {
    showUser(1, document.getElementById("sku1").value);
}

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

0 голосов
/ 03 апреля 2012

Ну, вы можете использовать событие onload .Вы также можете рассмотреть возможность использования функциональности document.ready в Jquery.Разницу можно найти здесь .Кроме того, Jquery предоставляет гораздо более краткий синтаксис для доступа к элементам формы

В любом случае вам, вероятно, просто понадобится функция, которая выполняет что-то вроде проверки поля и имеет значение.

<script type="text/javascript">  

function showUserOnLoad()
{
    var inputValue = $('#sku1').val();
    if(inputValue != '' && inputValue != null)
        showUser(1, inputValue);        
}

function showUser(userNumber, str)  
{
    ...
} 
</script>
0 голосов
/ 03 апреля 2012

Вы также можете использовать функцию готовности из jquery

$(document).ready(function() {
  showUser(1, $("#sku1").val());
});
...