Javascript 修改JQuery函数以在单击时运行

Javascript 修改JQuery函数以在单击时运行,javascript,jquery,Javascript,Jquery,我一直在努力修改这个函数,使它只需点击一个带有“boldbutton”类的按钮即可运行。每当我修改它时,功能都会改变。我真的觉得这个函数需要从jQuery('textarea')开始 如何修改此函数以使其 a) 保留it功能和 b) 仅在单击$('.boldbutton'时运行) jQuery('textarea')。on('keydown',函数(e){ e、 预防默认值(); var text=jQuery(this.val(); var start=this.selectionStart

我一直在努力修改这个函数,使它只需点击一个带有“boldbutton”类的按钮即可运行。每当我修改它时,功能都会改变。我真的觉得这个函数需要从jQuery('textarea')开始

如何修改此函数以使其

a) 保留it功能和

b) 仅在单击$('.boldbutton'时运行)


jQuery('textarea')。on('keydown',函数(e){
e、 预防默认值();
var text=jQuery(this.val();
var start=this.selectionStart;
var end=this.selectionEnd;
变量选择=''+文本.子字符串(开始,结束)+'';
text=text.substring(0,开始)+选择+text.substring(结束);
jQuery(this).val(text);
this.selectionStart=start;
this.selectionEnd=start+selection.length;
});

非常感谢你的帮助

如下更新您的代码。更新
jQuery('textarea')。在('keydown',函数(e){
jQuery('.boldbutton')。在('click',函数(e){
。将
jQuery(this)
更改为
jQuery('textarea')
。添加
var textarea=jQuery('textarea')[0];
并使用
textArea
而不是
this

<script>

    jQuery('.boldbutton').on('click', function(e) {

        e.preventDefault();

        var text = jQuery('textarea').val();
        var textArea = jQuery('textarea')[0];

        var start = textArea.selectionStart;

        var end = textArea.selectionEnd;

        var selection = '<b>' + text.substring(start, end) + '</b>';

        text = text.substring(0, start) + selection + text.substring(end);

        jQuery(textArea).val(text);

        textArea.selectionStart = start;

        textArea.selectionEnd = start + selection.length;

    });

</script>

jQuery('.boldbutton')。在('click',函数(e)上{
e、 预防默认值();
var text=jQuery('textarea').val();
var textArea=jQuery('textArea')[0];
var start=textArea.selectionStart;
var end=textArea.selectionEnd;
变量选择=''+文本.子字符串(开始,结束)+'';
text=text.substring(0,开始)+选择+text.substring(结束);
jQuery(textArea).val(text);
textArea.selectionStart=开始;
textArea.selectionEnd=start+selection.length;
});

您可以使用
.click()
方法将单击事件侦听器添加到按钮中

您可以使用
$(“textarea”)
以textarea元素为目标,而不是在代码中以
为目标(因为
现在指的是单击的按钮,而不是textarea)。要访问普通属性,可以使用
$(“textarea”)[0]
这将允许您使用
。选择开始
选择结束

请参见下面的工作示例:

$('.boldbutton')。单击(函数(){
var$textarea=$(“textarea”);
var text=$textarea.val();
var start=$textarea[0]。selectionStart;
var end=$textarea[0]。选择结束;
变量选择=''+文本.子字符串(开始,结束)+'';
text=text.substring(0,开始)+选择+text.substring(结束);
$textarea.val(文本);
$textarea.selectionStart=start;
$textarea.selectionEnd=start+selection.length;
});



粗体
尝试将整个JS代码包装在里面

$(document).ready(()=> {

})```

使用
$(“.boldbutton”)有什么问题。单击(function(){code});
您的代码中有单个
textarea
还是多个?如果是多个,则当按钮单击时,您希望为所有
textarea
调用此函数?单个textarea:)太棒了!谢谢!你知道为什么用户点击按钮后,选择没有保持选中状态吗?没什么大不了的。我只是好奇。@JasonHoward不用担心!我想这是因为你“未聚焦”(点击文本框)文本框,这意味着选择将消失。因此,它不仅发生在您单击按钮时,而且发生在您单击除文本框以外的任何其他位置时。啊,好的!谢谢!
$(document).ready(()=> {

})```