Я пытаюсь вычислить, если 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, ни один из них не работает. Выполняется ли оператор Javascript if
после загрузки страницы HTML? Я уверен, что строка внутри оператора if работает без инструкции if, я ее уже протестировал.
Вы должны выполнять эту строку каждый раз, когда содержимое textarea обновляется. Таким образом, вам нужно настроить логику в событии готовности DOM, но оценить условие для каждого изменения содержимого в области 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
если действительно необходимо, чтобы проверка проверялась после каждого отдельного символа, введенного с помощью используемого. Обычно это используется в сочетании с подсчетом символов. Но в вашем случае - когда вы пытаетесь добавить некоторый параметр URL-адреса, я думаю, что достаточно прослушать событие change
.
Оператор if
будет выполнен, когда DOM готов, то есть когда ваша страница полностью загружена. Конечно, на этом этапе ваше текстовое поле пусто. Поэтому ваше утверждение if
никогда не будет правдой. Вы должны добавить прослушиватель событий в текстовое поле:
$('.comments').on('keyup', function() {
// Do your IF statement here
});
Сделайте это на форме отправки формы. Таким образом, он будет проверять только один раз.
$('form').submit(function(){
if( $('.comments').val() ) {
$('form').attr('action', '?Email');
}
});
или мне нравится добавлять скрытый ввод:
$('form').append('<input type="hidden" name="email" value="1">');
или вы можете просто проверить на стороне сервера, если есть комментарии к электронной почте.
Хорошо, вы можете попробовать следующий код. Надеюсь, это поможет вам. Я написал код в 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>
Вы пробовали это? http://www.jqeasy.com/jquery-character-counter/
Кроме того, вы пытались называть свою форму с помощью идентификатора вместо этого ("форма")?
$('#theformid').attr('action', '?Email');