我试图计算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语句,我已经测试过了。
答案 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)
另外,您是否尝试通过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>