我有這樣的代碼,與表單輸入數據填充DIV:從窗體輸入文本元素的最後三個字符填充div?
var div = $('div')[0];
$('input').bind('keyup change', function() {
div.innerHTML = this.value;
});
,但我只想從輸入字段不是所有的字符提取最後三個字符。我如何使用jQuery做到這一點?
Thanx!
我有這樣的代碼,與表單輸入數據填充DIV:從窗體輸入文本元素的最後三個字符填充div?
var div = $('div')[0];
$('input').bind('keyup change', function() {
div.innerHTML = this.value;
});
,但我只想從輸入字段不是所有的字符提取最後三個字符。我如何使用jQuery做到這一點?
Thanx!
您可以使用JavaScript的內建方法.substr()
爲:
var div = $('div')[0];
$('input').bind('keyup change', function() {
var val = this.value,
valLength = val.length;
div.innerHTML = valLength < 3 ? val : val.substr(valLength - 3, 3);
// check if the value has less than three chracters. If yes return the plain value, if not return the less three characters.
});
.substr()
切出字符串的一部分。它接受兩個參數。第一個決定你希望子串開始的位置,第二個決定應該在多長時間。
您可以在值中使用substr如下:
div.innerHTML = this.value.substr(-3);
雖然作爲Microsoft JScript doesn't support a negative start value,你可能更喜歡:
div.innerHTML = this.value.substr(this.value.length-3);
,還應注意,我絕不會使用帶有用戶輸入值的'innerHTML'在您的案例中不必要地提升對目標元素的訪問權限。相反(如你使用jQuery),使用:
div.text(this.value.substr(-3));
我沒有看到使用'.html()'用戶輸入有任何問題。無論如何,用戶總是可以編輯標記。在任何webkit瀏覽器中按F12。 – 2011-12-30 12:12:02
它只是不好的做法,允許用戶界面注入[無論]無需的網頁。 Web Developer工具就是出於這個目的,因爲我懷疑OP的接口是爲了故意允許用戶注入代碼而設計的。儘管風險可能中等到極小,但永遠不應該以「這可能永遠不會成爲問題」的觀點來處理安全問題。 – isNaN1247 2011-12-30 12:16:25
你是對的'.text()'如果他只需要插入文本就更有效率。但它絕對不是*黑客夢想,因爲你總是可以插入自定義標記。只要他沒有像在服務器端那樣保存它,然後迴應它,這是沒有問題的。 – 2011-12-30 12:20:57
var txt =「string」; txt = txt.substring(txt.length-3);
在這種情況下,我會用slice()
:
div.innerHTML = this.value.slice(-3);
slice()
有兩個參數; begin
索引和end
索引。如果兩者都是負數,則索引將作爲字符串末尾的偏移量。
我想我會用一個小提琴(http://jsfiddle.net/chrisvenus/kFwcj/)來測試它是否需要一個警戒聲明(即如果val.length <3)。它出現了奇怪的結果,在鍵入A,B,C時顯示「A」,然後是「B」,然後是「ABC」,並繼續從那裏開始工作...不知道爲什麼這只是想我' d注意它是相關的(這在FF上,在IE中工作正常)。 – Chris 2011-12-30 12:15:02
@Chris你是對的!我添加了一些修復,現在它可以工作。注意:緩存長度可能是微型優化,但不會造成傷害。 – 2011-12-30 12:32:56
太棒了!感謝! – Ismailp 2011-12-30 13:02:06