1

我正在尝试计算 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,但都没有工作。if加载 HTML 页面后是否会运行Javascript语句?我很肯定 if 语句中的行在没有 if 语句的情况下工作,我已经测试过了。

4

5 回答 5

3

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

$( 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事件。这通常与字符计数结合使用。但在你的情况下——当你试图添加一些 URL 参数时——我想监听changeevent就足够了。

于 2013-11-12T16:30:48.630 回答
1

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

$('.comments').on('keyup', function() {
     // Do your IF statement here
});
于 2013-11-12T16:31:05.687 回答
1

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

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

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

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

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

于 2013-11-12T16:37:35.483 回答
0

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

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

$('#theformid').attr('action', '?Email');
于 2013-11-12T16:29:35.867 回答
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>
于 2013-11-12T17:01:08.793 回答