怎樣阻止input file文件域的change/onchange事件多次重復執行?


方法和原理就是:

  • 你本身是無法阻止文件域的onchange事件多次 被 觸發的, change(function(){....}); 方法會被多次執行的, 這個是無法改變的!
  • 你可以做的是: 當每次 執行change()方法的是, 通過一個標志變量, 來判斷change方法是否已經被執行, 當由 標志變量 探測到change方法 已經被執行過, 時就直接讓 change方法退出
function upGo(){
  $('#upload').click();  // 觸發fie域點擊事件動作
  var changeExed = false; // 這個是標志變量, changeExed: change is executed?

  $('#upload').change(function (ev){
    if(!changeExed){  
      changeExed = true;  // 執行一次后, changeExed就設置為true, 所以該代碼段 只能執行一次, 后面如果發生的 change事件執行的代碼 為空!  但是, 第二次及以后的change事件還是 發生 並 是執行了的! 

      var uf = ev.currentTarget.files[0];
      var fname = uf.name;
      .......
     };  // change 方法結束


///     要注意  在change方法中, 返回fale 並不能讓change代碼只執行一次, 只是: return false 阻止瀏覽器的默認行為 不能???

===========================================================

在js的split方法中, 如何寫正則表達式規則的形式?

  • 注意的是, js.split 方法中, 正則表達式, 一定要在兩邊 加上 斜杠 /..../, 其次, 不能在正則表達式上 加 引號! 因為加上引號后, js就認為是字符串, 不是正則表達式了
  • 讀取的文本內容 中可能有 html標簽, 這些標簽在 容器中會被hmtl 執行, 所以 要把這些標簽進行 轉換 成無意義的純字符.
      reader.onload = function(){
	content = this.result;
	
	// 在這里處理讀取到的文本內容
	var arr = content.split(/\r\n|[\n\r]/);    就是這里的關鍵
	var strCont ='';
	for(var i=0, j=arr.length; i<j; i++){
	  strCont += '<span>' + arr[i] + '</span><br>';
	}

	$('div.uc>p').html(strCont);
	$('div.showuc').css('display','block');
      };

=====================
js如何刪除數組中的某個元素?

  • 使用 splice(注意不是 slice 切片函數), splice(start, howmany)是用來刪除/替換/添加的函數. 從start索引開始刪除howmany個數組元素. splice函數會改變數組本身, 所以,不用返回值接受 , arr.splice(arr.length-1,1)
  • 使用delete 方法, 但是 該方法把某個元素 只是變成 'undefined'值, 數組的長度也不會改變
  • 使用 pop()方法, 該方法刪除最后一個元素, 同時返回最后一個元素的值, 這里你不要/丟棄 返回值就好了.

css中的overflow?

  • css的屬性 如果是多個單詞, 都是用 連字符- 來連接, 不是 pascal方法的大小寫駝峰法: 比如: style="max-heigth: 300px;", 不能寫成 maxHeight: 300px;

  • overflow的 scroll和 auto區別: 前者不管寬高是否超出都顯示 滾動條; 后者是通常不顯示滾動條, 只有超出寬高才顯示滾動條

==============

元素的hidden隱藏后, 如何顯示?

  • 要用 removeClass('hidden')來顯示出來, 不能用 設置css('display','inline-block')來顯示, 因為這時候, hidden類並沒有被刪除;
  • 只有用 display: none隱藏的元素, 才可以用 display: block來顯示出來

===============
所謂瀏覽器的默認行為?就是 在元素上 並沒有 顯式的 綁定什么事件, 但是卻發生的 行為behavior, 比如:

  • 點擊鏈接發生的跳轉事件/
  • 點擊 input type=submit元素 發生的表單提交事件/
  • 在鍵盤輸入的字符自動添加到text類型的input中, 都是 瀏覽器的默認行為
  <a href="http://www.abc.com">click me to jump</a>
  <script>
    var aa=document.getElementsByTagName('a')[0];
    aa.addEventListener('click', function(e){
      e.preventDefault();  // 這樣, 點擊a不會發生跳轉
    })
  </script>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM