剩余字符(如果数据存在)Javascript
Remaining characters if data exists Javascript
我有一个网站,用户可以在其中创建一个帐户,并且该信息会保存到 JSON。当用户点击“保存”时,页面会刷新,并且该数据会在从 JSON 拉取的字段中回显。我遇到的问题是在一个文本区域中我想限制字符数。如果该文本区域中没有数据,该脚本将完美运行。我无法弄清楚的问题是,如果有数据,因为用户保存了它,倒计时文本仍然是 100,用户可以继续输入更多信息。我想要的是当页面刷新时,Javascript 计算该文本区域中预填充的 JSON 信息并计算。基本上,一旦用户将数据保存到 JSON 并且页面刷新,Javascript 就会计算预先填充的任何文本。希望这是有道理的。这是我的代码。
文本区
<textarea spellcheck="false" id="textarea" maxlength="100"
name="welcome" required><?php if (!empty($main_data->welcome))
{ echo urldecode($main_data->welcome); } ?></textarea>
Javascript:
<script>
$(document).ready(function() {
var text_max = 100;
$('#textarea_feedback').html(text_max + ' characters remaining');
$('#textarea').keyup(function() {
var text_length = $('#textarea').val().length;
var text_remaining = text_max - text_length;
$('#textarea_feedback').html(text_remaining + ' characters remaining');
});
});
</script>
您可以 trigger() 在页面加载时绑定该事件。该方法将执行事件处理程序,从而实现预期的结果。
Execute all handlers and behaviors attached to the matched elements for the given event type.
$('#textarea').on(......).trigger('keyup'); //Notice here
$(document).ready(function() {
var text_max = 100;
$('#textarea_feedback').html(text_max + ' characters remaining');
$('#textarea').on('keyup', function() {
var text_length = $('#textarea').val().length;
var text_remaining = text_max - text_length;
$('#textarea_feedback').html(text_remaining + ' characters remaining');
}).trigger('keyup'); //Notice here
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea spellcheck="false" id="textarea" maxlength="100" name="welcome" required>PrefilledText</textarea>
<div id="textarea_feedback"></div>
但是,我建议您创建一个方法。然后您可以在页面加载时调用它并将其用作事件处理程序。
function setFeedback() {
var text_length = $('#textarea').val().length;
var text_remaining = text_max - text_length;
$('#textarea_feedback').html(text_remaining + ' characters remaining');
}
//Set on page load
setFeedback();
//Bind event
$('#textarea').on('keyup', setFeedback);
将您的代码替换为以下内容:
<script>
$(document).ready(function() {
$('#textarea').keyup(showRemainingCharacters).trigger("keyup");
});
function showRemainingCharacters() {
var maxLength = 100,
currentLength = $('#textarea').val().length,
remainingLength = maxLength - currentLength;
$('#textarea_feedback').html(remainingLength + ' characters remaining');
}
</script>
我有一个网站,用户可以在其中创建一个帐户,并且该信息会保存到 JSON。当用户点击“保存”时,页面会刷新,并且该数据会在从 JSON 拉取的字段中回显。我遇到的问题是在一个文本区域中我想限制字符数。如果该文本区域中没有数据,该脚本将完美运行。我无法弄清楚的问题是,如果有数据,因为用户保存了它,倒计时文本仍然是 100,用户可以继续输入更多信息。我想要的是当页面刷新时,Javascript 计算该文本区域中预填充的 JSON 信息并计算。基本上,一旦用户将数据保存到 JSON 并且页面刷新,Javascript 就会计算预先填充的任何文本。希望这是有道理的。这是我的代码。
文本区
<textarea spellcheck="false" id="textarea" maxlength="100"
name="welcome" required><?php if (!empty($main_data->welcome))
{ echo urldecode($main_data->welcome); } ?></textarea>
Javascript:
<script>
$(document).ready(function() {
var text_max = 100;
$('#textarea_feedback').html(text_max + ' characters remaining');
$('#textarea').keyup(function() {
var text_length = $('#textarea').val().length;
var text_remaining = text_max - text_length;
$('#textarea_feedback').html(text_remaining + ' characters remaining');
});
});
</script>
您可以 trigger() 在页面加载时绑定该事件。该方法将执行事件处理程序,从而实现预期的结果。
Execute all handlers and behaviors attached to the matched elements for the given event type.
$('#textarea').on(......).trigger('keyup'); //Notice here
$(document).ready(function() {
var text_max = 100;
$('#textarea_feedback').html(text_max + ' characters remaining');
$('#textarea').on('keyup', function() {
var text_length = $('#textarea').val().length;
var text_remaining = text_max - text_length;
$('#textarea_feedback').html(text_remaining + ' characters remaining');
}).trigger('keyup'); //Notice here
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea spellcheck="false" id="textarea" maxlength="100" name="welcome" required>PrefilledText</textarea>
<div id="textarea_feedback"></div>
但是,我建议您创建一个方法。然后您可以在页面加载时调用它并将其用作事件处理程序。
function setFeedback() {
var text_length = $('#textarea').val().length;
var text_remaining = text_max - text_length;
$('#textarea_feedback').html(text_remaining + ' characters remaining');
}
//Set on page load
setFeedback();
//Bind event
$('#textarea').on('keyup', setFeedback);
将您的代码替换为以下内容:
<script>
$(document).ready(function() {
$('#textarea').keyup(showRemainingCharacters).trigger("keyup");
});
function showRemainingCharacters() {
var maxLength = 100,
currentLength = $('#textarea').val().length,
remainingLength = maxLength - currentLength;
$('#textarea_feedback').html(remainingLength + ' characters remaining');
}
</script>