Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
textarea不工作的占位符javascript回退_Javascript_Jquery_Html - Fatal编程技术网

textarea不工作的占位符javascript回退

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

以下是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 = 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获取解决方案吗