Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基本javascript提问_Javascript_Jquery - Fatal编程技术网

基本javascript提问

基本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('

我正在尝试设置一个脚本来动态更改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('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');
});
});