2012-01-09 71 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

相关问题