javascript - 在输入字段中输入内容时在选择框中缩进文本
问题描述
我发现这dir="rtl"
会使文本位于右侧;但是我希望在input
元素中写入某些内容时有条件地发生这种情况。
我正在考虑禁用dir="rtl"
,直到将某些内容输入到input
元素中,然后才启用rtl
。但是,问题在于更改所暗示的“刷新页面”要求。
这是带有文本的简单下拉框。
<Select class="textToRight" dir="rtl">
<div class = "toRight">
<option class="this1"> TEXT1</option>
<option class="this2"> TEXT2</option>
<option class="this3"> TEXT3</option>
</div>
</select>
<input class ="dontChange" placeholder="dontChange"></input>
<input class ="change" placeholder="change"></input>
解决方案
要回答您的问题,是的,您可以通过附加事件处理程序来修改一个元素的属性,同时在另一个元素中触发事件。
在您的情况下,您可以将其附加到focusin
和focusout
事件。
var selectBox = document.querySelector(".textToRight");
var changeInput = document.querySelector(".change");
changeInput.addEventListener("focusin", function() {
selectBox.dir = "rtl";
});
changeInput.addEventListener("focusout", function() {
selectBox.dir = "ltr";
});
<select class="textToRight">
<div class="toRight">
<option class="this1"> TEXT1</option>
<option class="this2"> TEXT2</option>
<option class="this3"> TEXT3</option>
</div>
</select>
<input class="dontChange" placeholder="dontChange"></input>
<input class="change" placeholder="change"></input>
但是正如大卫托马斯所说的那样,有一个div
内部 aselect
不是有效的 HTML。
另外,我认为您在滥用该dir
属性,该属性旨在指示元素文本的方向性(例如英语与阿拉伯语)。
推荐阅读
- python - 如何检测 Python 内存泄漏
- c# - 如何使用 HiLo 解决 EF Core 迁移错误?
- apache-kafka - 是否建议在 schema.registry.url 中使用多个 URL?
- java - 如何从 WEB-INF 加载“迷你”弹簧上下文以初始化真实的应用程序上下文
- c# - 如何通过 c# windows 应用程序在 MTP 设备中创建文件夹?
- c - 为什么 CLion 的控制台输出中有多余的空间?
- javascript - 不管潜在的操作如何,一个函数返回一个纯的 thunk 吗?
- android - Cordova 8.0 中的 Android 构建问题
- jspdf - 如何修复:无法在字符串上创建属性“标题”
- python - 如何将字节转换为整数