2017-08-24 60 views
3

我回來了,我的顯然雄心勃勃的項目。跨度複製輸入文本弄亂其他連續空格

因此,我想將我的輸入文本複製到一個範圍並隱藏原始文本。

$('#street_1').on("input" ,function() { 
       document.getElementById('street1span').innerHTML = document.getElementById('street_1').value.substring(0, 10) + '<span style="color: red;">' + document.getElementById('street_1').value.substring(10) + '</span>'; 

Fiddle

我現在遇到的問題是,如果你把一個以上的空格連續,它們不受跨度註冊:
enter image description here
(一個空白工作得很好)

我正在尋找一種方法,可能會將空格註冊爲字符。

+0

如何關係到角這個問題?我在你的小提琴上看不到任何角度 – Vivz

+0

對不起,你是對的,在我使用JQ的小提琴中,但在我的網站上我只使用角度 –

+0

你究竟想要解決什麼? – Abinthaha

回答

2

試試這個。 .value.substring(0, 10).replace(/ /g, '&nbsp;')是你需要的。它將多個空格轉換爲&nbsp;這是用於空白的html。

$('#street_1').on('input' ,function() { 
    document.getElementById('street1span').innerHTML = document.getElementById('street_1').value.substring(0, 10).replace(/ /g, '&nbsp;') + '<span style="color: red;">' + document.getElementById('street_1').value.substring(10).replace(/ /g, '&nbsp;') + '</span>'; 

    }); 

Fiddle

+0

嗯,即使在小提琴中也不起作用 –

+0

我的不好。現在試試。 – abhig10

+0

這是完美的,謝謝! –

0

這是因爲多個空格不能被識別,除非指定爲nbsp ;.你需要一個功能來做到這一點。

function escapeSpaces (str) { 
    return str.replace(/^ +/mg, function (match) { 
     return match.replace(/ /g, "&nbsp;"); 
    }); 
} 

使用這樣escapeSpaces(的document.getElementById( 'street_1')。value.substring(0,10)),而連接字符串。

裁判 - Convert Multiple Spaces to &nbsp; At Beginning of Line with Javascript

+0

您能爲此創建一個小提琴嗎?我不能真的包住我的頭如何在y的情況下使用這個 –

1

您可以使用String.prototype.replace()只有一個空間str.replace(/\s+/g, ' ')

還注意到自己的代碼示例已經重構爲只使用jQuery來替換所有重複空格。

代碼:

$('#street_1').on('input' ,function() { 
 
    var $this = $(this), 
 
     html = ''; 
 
    
 
    $this.val($this.val().replace(/\s+/g, ' ')); 
 
    
 
    html = $this.val().substring(0, 10) + 
 
    '<span style="color: red;">' + 
 
     $this.val().substring(10) + 
 
    '</span>'; 
 
    
 
    $('#street1span').html(html); 
 
});
#div {position: relative;}#street_1 {font-family: "Times New Roman";caret-color: black; z-index: 1;font-size: 1em;}#street1span {display: inline-block;font-size: 1em;font-family: "Times New Roman";white-space: nowrap;overflow: hidden;width: 98%;position: absolute;top: 2px;left: 1px;padding: 1px;z-index: 2;pointer-events: none;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="div"> 
 
    <input id="street_1"/> 
 
    <span id="street1span"></span> 
 
</div>

+0

這是我沒有想過的替代解決方案。有沒有可能做到這一點,而不使用JQuery,只是原型? –

+0

當然,你可以通過使用代碼'str.replace(/ \ s \ s +/g,'')''來實現,其中'str'是保存輸入值的變量.. –

+1

謝謝,但我必須給予@ abhig10正確的答案,因爲他的解決方案更多的是我所問的。 –