简体   繁体   中英

show/hide div when user inputs text into text area?

I am trying to toggle a div so it shows and hides when a user enters text into textarea. i am using the below code and its not working for me, can anyone please show me why? thanks

html:

<head>
<script>
$(document).ready(function() {
   $("#cname").keyup(function() {
        if ($("#cname").val() > 8) {
             $('#cname2').toggle("slow");
        }
   });
});
</script>

</head>

<form>

<input type="text" id="cname" name="cname" class="field">
<div id="cname2"></div>
</form>

css:

#cname2{
width:30px;
height:30px;
position:absolute;
margin-top:-13px;
margin-left:400px;
background-image: url('tick.png');
background-repeat:no-repeat;
background-position:right;
display:none;

} 

so apparently my above code doesnt work in IE 9, but i should be able to achieve what i am trying to do by using this code, but can someone please show me where i place my div ID/how i adapt it to work for me?

var activeElement = null;
var activeElementValue = null;

// On focus, start watching the element
document.addEventListener("focusin", function(e) {
    var target = e.srcElement;
    if (target.nodeName !== "INPUT") return;

    // Store a reference to the focused element and its current value
    activeElement = target;
    activeElementValue = target.value;

    // Listen to the propertychange event
    activeElement.attachEvent("onpropertychange", handlePropertyChange);

    // Override .value to track changes from JavaScript
    var valueProp = Object.getOwnPropertyDescriptor(
            HTMLInputElement.prototype, 'value');
    Object.defineProperty(activeElement, {
        get: function() { return valueProp.get.call(this); },
        set: function(val) {
            activeElementValue = val;
            valueProp.set.call(this, val);
        }
    });
});

// And on blur, stop watching
document.addEventListener("focusout", function(e) {
    if (!activeElement) return;

    // Stop listening to propertychange and restore the original .value prop
    activeElement.detachEvent("onpropertychange", handlePropertyChange);
    delete activeElement.value;

    activeElement = null;
    activeElementValue = null;
});

function handlePropertyChange(e) {
    if (e.propertyName === "value" &&
            activeElementValue !== activeElement.value) {
        activeElementValue = activeElement.value;
        // Fire textchange event on activeElement
    }
};

One possible approach ( demo ):

$(document).ready(function() {
   $("#cname").on('input', function() {
       $('#cname2')[this.value.length > 8 ? 'hide' : 'show']('slow');
   });
});

Here I assumed that in cname2 container there's some warning message, that has to be shown if length of text input is 8 or less characters. Note also that I've used oninput handler, not keyup : as it allows me to process mouse-driven cut-and-paste as well as direct input. The only drawback is that IE8 doesn't support this event (and IE9 support for it is rather buggy, as handler is not fired when character is removed from text input).

$(document).ready(function() {
       $("#cname").keyup(function() {
            if ($("#cname").val().length > 8) {
                $('#cname2').show();
            } else {
                $('#cname2').hide();
            }
       });
    });

Use this Javascript function

var z = document.getElementById('cname');

z.onkeyup = function(){
    document.getElementById('cname2').innerHTML = z.value;
}

Your HTML:

<input type='text' name='cname' class='field' id='cname'>

    <div class='cname2' id='cname2'></div>

Checkout here: http://jsfiddle.net/iamsajeev/Q9LPv/

Try the following script:

$(document).ready(function() {
   $("#cname").keyup(function() {
       if ($("#cname").val().length > 8) {
             $('#cname2').toggle("slow");
        }
   });
});
    $(document).ready(function() {
       $("#cname").keyup(function() {
            if ($("#cname").val() > 8) {
                 $('#cname2').fadeIn("slow");
            }
           else
           {
                 $('#cname2').fadeOut("slow");
           }
       });
    });

http://jsfiddle.net/5EjP7/2/

I hope that helps

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM