Html 文本输入:占位符保留RTL,而只将输入更改为LTR

Html 文本输入:占位符保留RTL,而只将输入更改为LTR,html,placeholder,Html,Placeholder,现在的文本输入是RTL(占位符和输入)。属性是在其他地方设置的。 我的问题是如何进行更改,只将输入更改为LTR,而占位符保持为RTL 例如: 最初,文本框类似于 当它获得焦点时,输入应该是LTR,因为URL是LTR。 如果用户没有键入任何内容,并且框失去焦点,则占位符应该显示并保留RTL 有人能帮我吗?谢谢。使用HTML标记无法做到这一点,因为设置了元素所有属性(以及元素内容,如果有内容)的基本方向性 可以做的是在角色级别覆盖属性的基本方向性。这意味着您将元素的方向性设置为LTR(以便该值以

现在的文本输入是RTL(占位符和输入)。属性是在其他地方设置的。 我的问题是如何进行更改,只将输入更改为LTR,而占位符保持为RTL

例如: 最初,文本框类似于

当它获得焦点时,输入应该是LTR,因为URL是LTR。

如果用户没有键入任何内容,并且框失去焦点,则占位符应该显示并保留RTL


有人能帮我吗?谢谢。

使用HTML标记无法做到这一点,因为设置了元素所有属性(以及元素内容,如果有内容)的基本方向性

可以做的是在角色级别覆盖属性的基本方向性。这意味着您将元素的方向性设置为LTR(以便该值以这种方式显示),但在占位符值的开头使用U+202B从右到左嵌入,在其结尾使用U+202C POP方向格式。这将使它成为一个“RTL岛”。例如:

<input ... dir=ltr placeholder="&#x202b;...&#x202c;">

不幸的是,占位符文本随后将显示为左对齐(由于元素的方向性)。但是该文本的方向性将是RTL。

您可以使用此代码

//jQuery
(函数($){
$.fn.dir_auto=函数(){
变量选择器='。输入nyn[dir=“auto”];
var sclass=“auto-nyn05”;
var-ftime=true;
if($(选择器).length){
$(document).on(“keyup”,选择器,函数(){
if(ftime | |!$(this.val()){
if(!$(this.val()){
$(此).addClass(sclass);
ftime=true;
}
否则{
$(此).removeClass(sclass);
ftime=false;
}
}
});
}	
};
})(jQuery);
$(文档).ready(函数(){
$.fn.dir_auto();
});
//css
身体{
方向:rtl;
}
.inputs nyn.auto-nyn05[dir=“auto”]{
方向:rtl;
}
.inputs nyn[dir=“auto”]::占位符{
文本对齐:右对齐;
}