textarea不工作的占位符javascript回退
以下是html代码:textarea不工作的占位符javascript回退,javascript,jquery,html,Javascript,Jquery,Html,以下是html代码: <textarea name="test" rows="5" cols="20" placeholder="Brief description of your requirement,project, concept or idea"></textarea> <script> $(function() { function supports_input_placeholder() { var i = docum
<textarea name="test" rows="5" cols="20" placeholder="Brief description of your requirement,project, concept or idea"></textarea>
<script>
$(function() {
function supports_input_placeholder() {
var i = document.createElement('input');
return 'placeholder' in i;
}
if (!supports_input_placeholder()) {
var fields = document.getElementsByTagName('textarea');
for (var i = 0; i < fields.length; i++) {
if (fields[i].hasAttribute('placeholder')) {
fields[i].defaultValue = fields[i].getAttribute('placeholder');
fields[i].onfocus = function() {
if (this.value == this.defaultValue)
this.value = '';
}
fields[i].onblur = function() {
if (this.value == '')
this.value = this.defaultValue;
}
}
}
}
});
</script>
$(函数(){
函数支持\u输入\u占位符(){
var i=document.createElement('input');
在i中返回“占位符”;
}
如果(!支持\u输入\u占位符()){
var fields=document.getElementsByTagName('textarea');
对于(变量i=0;i
请帮我指出错误。占位符回退功能不起作用。我已经调试了很长时间了
下面是fiddle的链接:
检查ie9和下面的功能,因为它们不支持占位符属性:
谢谢试着把你的JS放进去
<script> ... </script>
。。。
标签:) 这里是纯JavaScript:
(function (D, undefined) {
'use strict';
var i, length, placeholder, textareas;
function hidePlaceHolder (placeholder) {
return function (e) {
var target;
target = e.target || e.srcElement;
if (target.value === placeholder) {
target.value = '';
}
};
}
function showPlaceHolder (placeholder) {
return function (e) {
var target;
target = e.currentTarget || e.srcElement;
if (target.value === '') {
target.value = placeholder;
}
};
}
if (! ('placeholder' in D.createElement('textarea'))) {
textareas = D.getElementsByTagName('textarea');
length = textareas.length;
for (i = 0; i < length; i += 1) {
placeholder = textareas[i].getAttribute('placeholder');
textareas[i].value = placeholder;
if (textareas[i].addEventListener) {
textareas[i].addEventListener('focus', hidePlaceHolder(placeholder));
textareas[i].addEventListener('blur', showPlaceHolder(placeholder));
} else {
textareas[i].attachEvent('onfocus', hidePlaceHolder(placeholder));
textareas[i].attachEvent('onblur', showPlaceHolder(placeholder));
}
}
}
}(document));
(函数(D,未定义){
"严格使用",;
变量i、长度、占位符、文本区域;
函数hidePlaceHolder(占位符){
返回函数(e){
var目标;
target=e.target | | e.src元素;
if(target.value==占位符){
target.value='';
}
};
}
函数showPlaceHolder(占位符){
返回函数(e){
var目标;
target=e.currentTarget | | e.src元素;
如果(target.value==''){
target.value=占位符;
}
};
}
if(!(D.createElement('textarea')中的“占位符”){
textareas=D.getElementsByTagName('textarea');
长度=textareas.length;
对于(i=0;i
我的发现和解决方案:
- 输入字段具有value属性,但TEXTAREA没有该属性
- 因此,当我们对输入标记使用inputObj.defaultValue=“sometext”时,如果我们不在输入标记中定义属性value=“something”,它会将默认值和当前值设置为sometext。对于以下版本,如果我们不定义value=“sometext”inputObj,defaultValue=“sometext”将不会将当前值本身设置为默认值。为此,我们可以做两件事:
- 我们必须手动给出value=“等于占位符文本的内容”
- 我们可以通过javascript获取占位符的值,并从中设置值
- textarea的情况并非如此。Textarea没有属性值。因此,当我们使用textareaObj.defaultValue=“sometextarea text”时,默认值设置为给定文本,而不是值本身,因为我们没有value属性。textarea中的值只是textarea标记之间的内容
- defaultvalue和value之间的差异:
- 默认值在设置后保持不变
- value是当前值,javascript或我们自己在文本字段中键入的内容正在修改该值
<textarea name="test" rows="5" cols="20" placeholder="Brief description of your requirement,project, concept or idea"></textarea>
<script>
$(function() {
function supports_input_placeholder() {
var i = document.createElement('input');
return 'placeholder' in i;
}
if (!supports_input_placeholder()) {
var fields = document.getElementsByTagName('textarea');
for (var i = 0; i < fields.length; i++) {
if (fields[i].hasAttribute('placeholder')) {
fields[i].defaultValue = fields[i].getAttribute('placeholder');
fields[i].value = fields[i].getAttribute('placeholder');//setting the value
fields[i].onfocus = function() {
if (this.value == this.defaultValue)
this.value = '';
}
fields[i].onblur = function() {
if (this.value == '')
this.value = this.defaultValue;
}
}
}
}
});
</script>
$(函数(){
函数支持\u输入\u占位符(){
var i=document.createElement('input');
在i中返回“占位符”;
}
如果(!支持\u输入\u占位符()){
var fields=document.getElementsByTagName('textarea');
对于(变量i=0;i
谢谢你们的快速回复,我很同情那个投票否决这个问题的家伙。我觉得这是个好问题。是吗?它有什么问题?你得到了什么错误?defaultValue不起作用我猜不起作用你的意思是它不可见?我的意思是占位符功能不适用于不支持它的浏览器。事实上,我忘了它here@susheel我不希望包含脚本标记。这只是示例代码中更大的容量。这是一个愚蠢的回答。请帮我解决这个问题。我的错误是我匆忙地把它忘了。我现在改正了是的,jquery更容易使用,但出于某种原因,我正在工作的项目在使用javascript方面更为具体。我肯定你会的。那么,你能帮我用javascript获取解决方案吗