jQuery输入值切换

时间:2011-02-09 12:16:58

标签: jquery html input

我一直在使用此代码切换输入onFocus和Blur的值:

$('input, textarea').focus(function() {
            value=$(this).val();
            $(this).attr("value","")};
        });
        $('input, textarea').blur(function() {
            if($(this).val()=="") {
                $(this).val(value);
            }
        });

唯一的问题是,当我在这些输入中键入内容时,然后在键入另一个输入后重新聚焦,该字段变为空白。有没有办法编辑这段代码来禁止这个?

Example for you here:)


我试过这样的事情,但它没有我想要的效果:

$('input, textarea').focus(function() {
            value=$(this).val();
    if($(this).val(value)) {
            $(this).attr("value","");
        });
        $('input, textarea').blur(function() {
            if($(this).val()=="") {
                $(this).val(value);
            }
        });

5 个答案:

答案 0 :(得分:3)

您需要设置初始值并检查..

$('input, textarea').each(function(){
    // initial storing of the pre-defined value
    $(this).data('initial', this.value);
}).focus(function(){
    var $this = $(this);
    // on focus if the value of the field is still the initial then clear it
    if ( (this.value) == $this.data('initial') )
      this.value = '';
}).blur(function(){
    var $this = $(this);
    // on blur if the value is still cleared then restore the initial 
    if ( (this.value) == '' )
        this.value = $this.data('initial');
})

演示http://jsfiddle.net/EMYmG/2/


<强>更新

您可以避免存储到数据,因为我们可以使用名为defaultValue的标准属性。 (变得更清洁

$('input, textarea').focus(function(){
        // on focus if the value of the field is still the initial then clear it
        if ( (this.value) == this.defaultValue )
          this.value = '';
    }).blur(function(){
        // on blur if the value is still cleared then restore the initial 
        if ( (this.value) == '' )
            this.value = this.defaultValue;
    })

演示http://jsfiddle.net/PjsRQ/

答案 1 :(得分:1)

值不是标签。试图假装它们会导致严重的可访问性问题。

如果你真的想使用这种设计,我请你不要这样做。然后在输入下放置标签并对其进行样式设置,使其无法看到(但仍存在于屏幕阅读器的DOM中)。

A jQuery example is on my website,代码清晰,但等待正确记录。

答案 2 :(得分:1)

尝试这样的事情:http://jsfiddle.net/Ajcmq/

这是一个非常简单的事情,真的:如果该字段的值是最初的四个值之一,那么清除它,否则,我们假设它已被更改,我们将它留在焦点上。

唯一的缺点是,当您在另一个字段中使用四个dfault值之一时,它也将被清空:D。

答案 3 :(得分:0)

jQuery Form Example plugin执行此操作的方法是将一个类分配给输入元素,并在更改元素中的初始值以确定在DOM加载后哪些元素已编辑且仍包含哪些元素后将其删除初始值。

答案 4 :(得分:0)