【问题标题】:execute javascript onload rather than onchange执行 javascript onload 而不是 onchange
【发布时间】:2012-04-02 21:19:45
【问题描述】:

我有一个 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% 有效。但是,如果输入由会话变量填充,并且页面被刷新,我怎样才能让脚本再次执行 onload,而没有 onchange 事件?

那么当第一次访问页面时,输入的id有值,执行脚本?

【问题讨论】:

    标签: javascript onload onchange


    【解决方案1】:

    只执行onload函数?

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

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

    【讨论】:

    • 这太容易了!谢谢你。将尽快接受答案!
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      好吧,您可以使用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>
      

      【讨论】:

        猜你喜欢
        • 2018-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-16
        • 1970-01-01
        • 1970-01-01
        • 2012-04-11
        • 1970-01-01
        相关资源
        最近更新 更多