2010-07-29 50 views
2

當談到Javascript/jQuery時,我總是新手,所以希望你能幫助我。從粘貼的文本去掉文本框中的「http://」

我有一個文本框,大多數人都會粘貼鏈接。是否有一個很好的方式讓文本框檢測到已經粘貼了一個鏈接(從http://開始),然後在文本框中動態刪除協議,而無需事後按下按鈕左右?

+0

你希望它剝離出的「http://」立即只要它的輸入/粘貼或只是在提交的形成? – Ryan 2010-07-29 14:49:51

+3

如果有人粘貼「https」鏈接會發生什麼? – 2010-07-29 14:56:24

回答

2

假設你希望它儘快剝離出來當用戶鍵入/粘貼它:

比方說,爲了討論各種情形,你已經給了文本輸入的ID「URL」:

$(document).ready(function(){ 

    var timer; 

    $("#url").live("keyup",function(){ 
     clearTimeout(timer); 

     timer = setTimeout(function(){ 
      var textbox = $("#url"); 
      if (textbox.val().indexOf("https://") == 0) 
       textbox.val(textbox.val().substring(8)); 
      if (textbox.val().indexOf("http://") == 0) 
       textbox.val(textbox.val().substring(7)); 
     },500); 
    }); 
});​ 

正如@Marcel Korpel在評論中提到的那樣,現在應該照顧你想要的東西。

+0

你也可以結合定時器(例如一秒)完成這個'onkeypress',所以在按下最後一個鍵之後的一秒鐘,表單域改變了。是的,當使用網站作爲某種代理時(從另一個具有訂閱的IP地址訪問網站;例如:https://),我在中間看到帶有「http://」的網址www.example.com/access/http:// hiddensite.org')。 – 2010-07-29 15:21:20

+0

@Marcel:請參閱我上面修改的帖子,讓我知道這是否有效。我把延遲設置爲半秒,而不是整秒,但這很容易改變。 – Ryan 2010-07-29 15:43:32

+0

這[作品](http://jsbin.com/ihopu/edit#preview),雖然我不確定這是否適用於OP的實際問題;),因爲它剝離協議,而不管它是否是http :'或'https:',使得幾個站點無法訪問(當在輸出中重新連接'http:'時)。 – 2010-07-29 16:01:13

2

你可以使用string.replace(),基本的JavaScript真的,它實際上接受一個正則表達式,所以string.replace(/^http:\/\//,"")應該就足夠了。

+1

當它位於字符串的中間時,這也會消除'http://' – 2010-07-29 14:51:26

+0

這是非常真實的是,猜你必須做一些正則表達式^ http:// – Lloyd 2010-07-29 15:19:51

+0

添加了正則表達式版本,這應該像想的那樣。 – Lloyd 2010-07-29 15:22:21

2

這將檢查以確保它以http://開頭,然後將其替換。

$(document).ready(
    function() 
    { 
     $("#url").change(
      function() 
      { 
       var textbox = $(this); 
       if (textbox.val().indexOf("http://") == 0) 
        textbox.val(textbox.val().substring(7)); 
      }); 
    });​ 

這裏也是一個工作示例來看看: http://jsfiddle.net/epwDA/4/

+0

謝謝!不如瑞恩的解決方案,但這也是一種魅力。將這個答案標記爲有用的,當我可以(顯然我太新,這個網站做到這一點呢..) 並感謝關於jfiddle – larschanders 2010-07-30 11:30:30