2012-01-09 68 views
3

我怎樣才能告訴與JS之間佔位符的字段長度與字段內容長度在IE中的不同。我正在嘗試獲取輸入字段/文本區域內容的長度,但IE將佔位符文本作爲內容進行計數。如何在IE中獲得字段長度而不計佔位符文本

<input type="text" value="" id="some_field" placeholder="Test" /> 

jQuery("#some_field").val().length //in Safari/Chrome/FF = 0 in IE7/8 = 4. 
+3

佔位符在IE <9中不起作用。如果你正在使用插件來模擬它,那麼它將用佔位符來替換值,從而使得長度爲4. – 2012-01-09 22:15:53

+0

嗨Rocket,他們本身就是用IE5爲我製作一個HTML5表單。 – brupm 2012-01-09 22:16:53

+0

@brupm然後你有一個非常特殊的IE8,因爲我的工作本身不工作。 – 2012-01-09 22:18:49

回答

2

雖然placeholder屬性可能無法在工作> IE9,它並沒有解釋爲什麼在瀏覽器任意地解釋placeholder屬性作爲其值的長度的長度。

爲了使事情更有趣,我無法在IE7或IE8中複製此行爲。在這兩個瀏覽器中,當字段爲空時,我的長度爲0。

這是我跑了劇本:http://jsfiddle.net/ASmJX/1/

我也使用了與prop()方法,看它是否發揮了作用。我建議你這樣做。

HTML

<input type="text" value="" id="some_field" placeholder="Test" /> 

<p> 
    <button type="button" id="test_val">Check Length - val()</button> 
    <button type="button" id="test_prop">Check Length - prop()</button> 
</p> 

JS

$('#test_val').on('click', function() { 
    alert($("#some_field").val().length); 
}); 

$('#test_prop').on('click', function() { 
    alert($("#some_field").prop('value').length); 
}); 

或許有比一個不兼容的屬性更合你的問題。

+0

謝謝,這裏的問題是我使用https://github.com/akaspin/jquery .f5模仿佔位符。所以顯然無法繞過它,因爲插件將值設置爲佔位符。 – brupm 2012-01-09 22:40:59

+1

OP使用插件來模擬IE中的佔位符。實際上,佔位符在IE9中不工作,他們將在IE10中工作。無論如何,插件通過將佔位符值複製到輸入的值來模擬佔位符。因此,在檢查長度時,它是4(佔位符的長度)。 – 2012-01-09 22:41:18

+0

啊...我沒有看到有關插件的評論,直到我刷新頁面。看起來像@火箭在他最後的評論中找到了答案。 – 2012-01-09 22:48:33