执行javascript onload而不是onchange

时间:2012-04-02 21:19:45

标签: javascript onload onchange

我在PHP页面中有HTML表单。表格有各种输入。其中一个输入有一个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事件的情况下让脚本再次执行onload?

所以当第一次访问页面时,id输入有一个值,执行脚本?

3 个答案:

答案 0 :(得分:2)

只需执行onload函数吗?

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

您也可以使用文档正文的onload属性,或将init函数作为事件处理程序添加到DOMContentLoaded。但我相信你已经有了一些在DOMready上执行的功能。

答案 1 :(得分:0)

你也可以使用jquery中的ready函数

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

答案 2 :(得分:0)

好吧,您可以使用onload事件。您可能还想考虑使用Jquery的document.ready功能。可以找到差异here。此外,Jquery为访问表单元素提供了更简洁的语法

在任何一种情况下,您可能只需要执行某些功能,例如检查字段是否有值。

<script type="text/javascript">  

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

function showUser(userNumber, str)  
{
    ...
} 
</script>