如何检查Textarea的长度

时间:2013-11-12 16:25:07

标签: javascript jquery javascript-events dom-events

我试图计算textarea的长度是否大于零,然后运行一段代码。我出于某种原因无法让这个工作。我很感激帮助。

这是我的代码:

Javascript (包括 jQuery ):

$(document).ready(function () {
    if ($('.comments').val().length > 0) {
        $('form').attr('action', '?Email');
    }
});

HTML

<form action="?AddToQuote" method="POST">
    <textarea name="comments" class="comments"></textarea>
    <input type="submit" value="submit" />
</form>

我尝试过很多不同的Javascript,但都没有。 HTML页面加载后是否运行Javascript if语句?我很肯定if语句中的行没有if语句,我已经测试过了。

5 个答案:

答案 0 :(得分:3)

每次textarea内容更新时,您都需要执行该行。因此,您需要在DOM ready事件上设置逻辑,但要评估textarea中每个内容更改的条件:

$( document ).ready( function() {

    var $comment = $('.comments');
    $comment.on( 'change', function( event ) {

        if( $('.comments').val().length > 0 ) {
            $( 'form' ).attr( 'action', '?Email' );
            $comment.off( 'change' );
        }

    } );

} );

正如@destroydaworld所建议的那样,如果确实有必要在使用的每个字符输入后评估检查,你也可以使用keyup event。这通常与字符计数结合使用。但在你的情况下 - 当你试图添加一些URL参数时 - 我想这听取change event就足够了。

答案 1 :(得分:1)

您的if语句将在DOM准备就绪时执行,也就是说当您的页面满载时。当然,你的textarea在那个阶段是空的。所以你的if陈述永远不会成真。您应该像这样在textarea中添加一个事件监听器:

$('.comments').on('keyup', function() {
     // Do your IF statement here
});

答案 2 :(得分:1)

在表单的提交事件上执行此操作。这样它只会检查一次。

$('form').submit(function(){
  if( $('.comments').val() ) {
    $('form').attr('action', '?Email');
   } 
});

或者我想添加一个隐藏的输入:

$('form').append('<input type="hidden" name="email" value="1">');

或者您可以在服务器端检查是否有任何评论要发送电子邮件。

答案 3 :(得分:0)

你试过这个吗? http://www.jqeasy.com/jquery-character-counter/

另外,您是否尝试通过ID调用表单而不是('表单')?

$('#theformid').attr('action', '?Email');

答案 4 :(得分:0)

您可以尝试以下代码。希望它能帮到你。我用JS编写了代码。您需要在页面加载上调用该函数。希望这有帮助!

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript">
window.onload = function display()
{
var txt = document.getElementById("myarea").value;
var len = txt.length;
if (len > 0){
    document.write("Sucess"); // if len > 0 do some action
}
else
    document.write(txt); //else condition
}
</script>
</head>
<body>
<textarea id="myarea" rows="4" cols="25">
Hello! How are you??
</textarea>
</body>
</html>