【问题标题】:Changing multiple textareas css values with javascript and dropdown?使用javascript和下拉更改多个textareas css值?
【发布时间】:2015-11-29 17:02:51
【问题描述】:

http://jsfiddle.net/g3u7hxr6/4/

我有以下代码,目前它使用下拉框更改所有 textareas css 值。

I want it so that when 1 textarea is selected and glowing green, the dropdown boxes will only change the css for the selected textarea rather than all of them.

基本上我希望能够单独更改每个文本区域的字体。

我考虑使用另一个下拉框来选择要更改的文本区域。但必须有一种方法让 javascript 检测选定的文本区域并仅对其进行更改。我需要为每个 textarea 添加一个唯一的 id 字段,但我完全迷失了 javascript。请帮忙!!!

感谢 Binvention 的回答: http://jsfiddle.net/g3u7hxr6/19/

JS:

$(function () {
$("[id^=font]").on('change', function () {
    $('.address').css(this.id, /\d/.test(this.value) ? this.value + "px" : this.value);
    });
});


$('.address').focus(
function(){
    $(this).parent('div').css('box-shadow','0px 0px 10px green');
}).blur(
function(){
    $(this).parent('div').css('box-shadow','0px 0px 0px');
});

HTML:

    <div class="options">
<div class="left">Font:
    <br>Size:
    <br>Weight:</div>
<div class="right">
    <select name="fontFamily" id="fontFamily">
        <option selected value="Verdana">Verdana</option>
        <option value="Arial">Arial</option>
    </select>
    <br>
    <select name="fontSize" id="fontSize">
        <option value="8">8</option>
        <option selected value="16">16</option>
        <option value="24">24</option>
    </select>
    <br>
    <select name="fontWeight" id="fontWeight">
        <option selected value="Bold">Bold</option>
        <option value="Normal">Normal</option>
    </select>
       <br /> <br />
</div>

        <div class="page">
<div class="left border">
    <textarea class="address" tabindex="1">text area 1</textarea>
</div>
<div class="right border">
    <textarea class="address" tabindex="4">text area 4</textarea>
</div>
<div class="left border">
    <textarea class="address" tabindex="2">text area 2</textarea>
</div>
<div class="right border">
    <textarea class="address" tabindex="5">text area 5</textarea>
</div>
<div class="left border">
    <textarea class="address" tabindex="3">text area 3</textarea>
</div>
<div class="right border">
    <textarea class="address" tabindex="6">text area 6</textarea>
</div>
</div>

CSS:

 .left {
    float: left;
}
.right {
    float: right;
}
.options {
width: 200px;
}
.page {
width: 440px;
}
.border {
border:1px solid #888;
border-radius: 5px;
padding: 5px;
margin: 0 0px 0px 0;
}

textarea {
resize:none;
height: 100px;
    width: 200px;
    overflow: auto;
    font-family: Verdana;
    font-size: 16px;
 } 

【问题讨论】:

  • 尝试使用父母而不是父母或摆脱论点真的什么都不做
  • 第二位 javascript 仅用于在 textarea 的父 div 周围发光...我想在我可以正常工作之前将删除代码!
  • 要使其只有当前选定的框光泽,您可以使用 :focus 指示器
  • 您的问题是,为了更改字体类型,文本区域不再集中,因此与您想要为所选内容添加类的其他文本区域无法区分,然后每次单击了一个新文本框,将其从旧文本框中删除并将其添加到新文本框中

标签: javascript php jquery html css


【解决方案1】:

你需要创建一个独特的类,像这样将一个标记为选中

$('textarea').click(function(){
    $(this).toggleClass('textselected');
 });

这将允许您动态选择要编辑的文本框,只需单击即可编辑单击以取消选择编辑。您需要一些 CSS 来区分已选择和未选择。 然后,当您编辑字体和文本属性时,您使用该特殊类而不是文本区域来选择这样的属性

$("[id^=font]").on('change', function () {
$('.textselected').css(this.id, /\d/.test(this.value) ? this.value + "px" : this.value);
});
});

【讨论】:

  • 你的意思是发光的绿色吗?它只是显示当前选定的文本区域,它可能会被删除....我的主要目的是让下拉框分别对每个文本区域进行字体更改!当前的 javascript 一次更改所有文本区域的字体。
  • 好的,您可能只想遍历文本区域一秒钟,我会更新我的答案
  • 你能在 jsfiddle 上给我看一下吗,我对 javascript 太糟糕了,我不知道如何实现它。我不认为这是我所追求的......例如,这就是我希望下拉框在选择 textarea1 时发挥作用的方式 - jsfiddle.net/g3u7hxr6/9
  • 哦,我明白你的意思了
  • 这有意义吗?
【解决方案2】:

我已经对你的小提琴进行了必要的更改here

您需要在焦点事件中添加$(this).addClass('selected');,并在更改事件中将选择器更改为$('.address.selected')

【讨论】:

  • 谢谢,太接近了...我需要它保持选中状态并发出绿光,直到选中另一个框或单击空白区域。例如,一旦我更改了字体大小,我必须再次单击 textarea 以更改字体粗细!
  • 此外,如果没有突出显示,它仍然应该对所有文本区域进行更改
  • 是的,我知道这将是问题所在,如果是这种情况,您需要维护某种计数并将其添加到选择器以使其唯一,例如 selected_1 或 selected_5。
猜你喜欢
  • 1970-01-01
  • 2010-10-08
  • 2012-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-01
  • 1970-01-01
  • 2012-05-24
相关资源
最近更新 更多