基本javascript提问
我正在尝试设置一个脚本来动态更改textarea内容 通过谷歌搜索,我发现:基本javascript提问,javascript,jquery,Javascript,Jquery,我正在尝试设置一个脚本来动态更改textarea内容 通过谷歌搜索,我发现: $(document).ready(function() { // This is a first text modification that works fine $('textarea#modifyme').val('Some useless text'); // Catching a select change $('select#changemyvalue').bind('
$(document).ready(function() {
// This is a first text modification that works fine
$('textarea#modifyme').val('Some useless text');
// Catching a select change
$('select#changemyvalue').bind('change keyup input',function() {
// This alert triggers but twice
alert('I know you want to change text');
// This is not displaying...
$('textarea#modifyme').val('I do not want to be display');
});
});
第一个值设置很好,但当涉及到选择更改检测时,它会变得有点奇怪。
警报触发两次,第二个值设置不起作用
非常感谢您的帮助!谢谢
多亏了你的回答,我修复了双触发器,但是secon.val'sometext'仍然没有触发
我试图将此应用于显示为wysiwyg编辑器的文本区域,我只能先更改加载时的文本。val'xx'调用
我还注意到,如果我反转这两条线:
// This alert triggers now only once
alert('I know you want to change text');
// This is not displaying...
$('textarea#modifyme').val('I do not want to be display');
致:
代码似乎在第一行中断,阻止显示“警报”
所见即所得编辑器的性质是否阻止页面加载后的文本更改
以下是html代码的简短版本:
<select name="" id="selectMe">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<textarea class="textarea callhtml5" name="changeMe" id="changeMe"></textarea>
<!-- Bootstrap WYSIHTML5 -->
<script src="path to wysihtml5 bootstrap"></script>
<script>
$(".callhtml5").wysihtml5();
</script>
<script>
$(document).ready(function() {
$('textarea#changeMe').val('Initial text setup');
$('select#selectMe').bind('change keyup',function() {
alert('Test');
$('textarea#changeMe').val('Final text setup');
});
});
<script>
代替此方法:
$('textarea#changeMe').val('Final text setup');
这是因为键控和输入。如果绑定两个事件,回调将执行两次
为了解决这个问题,请使用这两个绑定输入。你可以省略键控键
关于输入事件,我想提到的一件事是它不能被捕获。我的意思是,它不会让你们捕捉事件
刚刚注意到元素是元素,所以使用ChangeKeyUp更好。您应该避免使用输入事件,因为您不是在其中输入文本值,而是使用鼠标或键更改它。您需要从.bind中取出更改或输入。这两个事件都会触发,因此会运行该函数两次 希望这有帮助!: 从jQuery 1.7开始,.on方法是将事件处理程序附加到文档的首选方法。对于早期版本,.bind方法用于将事件处理程序直接附加到元素 您可能需要这样更改代码才能正常工作
$(document).ready(function() {
$('textarea#modifyme').val('Some useless text');
$('select#changemyvalue').on('change', 'keyup', 'input',function() {
alert('I know you want to change text');
$('textarea#modifyme').val('I do not want to be display');
});
});
编辑:使用三件事,其中一件会正常工作。使用input或keyup可以将事件参数添加到处理程序中,并检查引发的事件
如下所示:首先-,然后-
因此,您应该只选择其中一个
这很有趣,但似乎是在Chrome中引发的select输入事件
样本:
$document.readyfunction{
$'textareamodifyme'.val'一些无用的文本';
$'selectchangemyvalue'。在'change keyup input'上,函数E{
console.log'Now risted:'+e.type+'event';
$events.append'Now raised:'+e.type+'event';
//这不是显示。。。
$'textareamodifyme'.val'I不想显示';
};
};
1.
2.
3.
删除脚本上的keyup输入
像这样尝试这个Jquery
$(document).ready(function() {
$('textarea#modifyme').val('Some useless text');
$('select#changemyvalue').on('change', function(e) {
// This alert triggers but twice
alert('I know you want to change text');
// This is not displaying...
$('textarea#modifyme').val('I do not want to be display');
});
});
请,你能添加html吗?绑定'change keyup input',。。。从未听说过输入事件。是什么?@hindmost,像这样@Grundy Ok,但它适用于选择吗?@hindmost,是的,请看这个:我认为宁愿改变,输入'change'更重要better@RIYAZKHAN更改事件在您离开输入时发生。您必须将焦点放在该元素之外。@riyazkhan我应该编辑的最后一条注释,但您是正确的,因为该元素是一个select元素,所以更改事件就足够了。但似乎op想要捕捉,如果值变化发生在箭头键等。我想。关于输入事件,我想提到的一点是,它不能被捕捉。-那不是真的。也许您应该扩展该语句,以澄清输入事件应用于哪些元素和/或哪些浏览器支持它-您当然可以为某些表单元素提供输入更改处理程序。仍然支持bind方法,对于简单的非委托等。case的作用与您建议的on代码完全相同。是,我也用过。我可能认为on做得更好,而且一些意想不到的行为,比如代码的某些部分不工作,尽管所有逻辑和语法都是正确的,但很少使用onNo,bind和on一样可靠,因为它做的事情与on完全相同-bind的实际实现只是对on的调用。因此,在调用时使用on会稍微更有效一些,但在绑定事件发生时没有任何区别,对于意外行为也没有任何区别。我只使用了bind几次,所以不确定该行为。我依靠你。也许我当时会把逻辑或语法写错。不管怎么说,这就是你给我的精彩解释。谢谢你的信息。嗨,谢谢你的回答。我修复了双警报触发器,但代码的最后一部分仍然不起作用。我不明白为什么第二个.val'somestring'没有触发。。。我正在尝试更改显示为wysiwg编辑器的文本区域,这可能是我无法在事件后修改该文本区域的原因吗?是否只能在页面加载时设置此选项?如果我将这两行的顺序颠倒为:A-alert“I know you want change text”;B-$“textareamodifyme”。val“我不想被显示”;收件人:B-$“textareamodifyme”。val“我不想被显示”;我知道你
nt更改文本';我完全没有运行任何东西,警报没有显示,文本区域没有发生更改…@Poissonvert,在选择更改后文本区域值更改的代码段中?是的。但我要说的是,wysihtml5方法是创建一个iFrame来显示文本值。我通过谷歌搜索成功地改变了它:
$(document).ready(function() {
$('textarea#modifyme').val('Some useless text');
$('select#changemyvalue').on('change', 'keyup', 'input',function() {
alert('I know you want to change text');
$('textarea#modifyme').val('I do not want to be display');
});
});
$(document).ready(function() {
$('textarea#modifyme').val('Some useless text');
$('select#changemyvalue').on('change', function(e) {
// This alert triggers but twice
alert('I know you want to change text');
// This is not displaying...
$('textarea#modifyme').val('I do not want to be display');
});
});