【问题标题】:Returning text to default state (jQuery)将文本返回到默认状态(jQuery)
【发布时间】:2016-07-16 09:21:36
【问题描述】:

我尝试在我的文档中收集文本字段并将其替换为不同的文本(语言)。一切顺利,但我无法在不重新加载页面的情况下将其退回。

首先,我希望替换的所有文本字段都有名为lang="en" 的属性。

所以我使用 jQuery .each() 函数将它们全部收集到一个数组中,执行以下操作:

$(document).ready(function() {
   $("[lang=en]").each(function(){
   var textArray = $(this).text();
   });
});

虽然变量 textArray 包含要替换为另一个变量的所需文本字段的集合。示例:

var replaceText = textArray.replace("Hello", "Hi").replace("Good afternoon!", "Hi!");

虽然在每个函数中我可以使用$(this).text(replaceText) 来应用替换的文本,但我希望通过单击按钮 (button1) 来实现,而另一个按钮 (button2) 会将其更改回来。

内部按钮 onclick 事件(在每个循环函数内部)$["lang=en"].text(replaceText); 没有正确的效果。

【问题讨论】:

    标签: jquery text back


    【解决方案1】:
    <input type="button" id="convert" value="Convert"/>
    <input type="button" id="convert-back" value="Convert Back"/>
    

    #convert 将转换所有具有lang=en 属性的输入文件中的文本。 #convert-back 按钮将执行相反的操作。让我知道它是否适合你


    $(document).ready(function () {
    
        $("#convert").click(function () {
    
            $("input:lang(en)").each(function () {
    
                var textArray = $(this).val();
                var replaceText = textArray.replace("Hello", "Hi").replace("Good afternoon!", "Hi!");
                $(this).val(replaceText)
            });
        });
    
        $("#convert-back").click(function () {
    
            $("input:lang(en)").each(function () {
    
                var textArray = $(this).val();
                var replaceText = textArray.replace("Hi", "Hello").replace("Hi!", "Good afternoon!");
                $(this).val(replaceText)
            });
        });
    
    });
    

    编辑

    HTML 部分

    <input type="text" lang="en" value="Hello" alt="Hello, stack"/>
    <input type="text" lang="en" value="Hello" alt="Hello, over"/>
    <input type="text" lang="en" value="Hello" alt="Hello, flow"/>
    <input type="text" lang="en" value="Hello" alt="Hello, stack"/>
    <input type="text" lang="en" value="Hello" alt="Hello, over"/>
    
    <input type="button" id="convert" value="Convert"/>
    

    jQuery部分

    $(document).ready(function () {
    
        $("#convert").click(function () {
    
            $("input:lang(en)").each(function () {
    
                var textArray = $(this).val();
                var newArray = $(this).attr("alt");
    
                $(this).val(newArray);
                $(this).attr("alt", textArray);
            });
    
            if ($(this).val() == "Convert") { $(this).val("Convert back"); } 
    
            else { $(this).val("Convert"); }
        });
    
    });
    

    将旧值存储到输入框的alt 标记中以再次替换。如果对您有帮助,请告诉我。

    【讨论】:

    • 我实际上是这样做的,但是如果不重写替换值,就没有办法“转换回”吗?我有很长的 .replace 列表。就像在不同功能的某个地方存储默认值一样?
    • 我们必须将旧值存储在某个地方,例如隐藏框以便再次检索。
    • 编辑了我的答案,如果您正在寻找类似的东西,请检查并告诉我
    • 其实文字使用alt属性是个好主意,我看看。
    • 我已经使用属性 lang-def 和 lang-alt 进行了尝试,一切正常,感谢您的好主意。但是,您应该更改您的编辑代码,它交换 value 和 alt ?为什么 ?我希望替换文本而不是属性,所以 $(this).text(newArray); & $(this).text(textArray) 有效。
    猜你喜欢
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2017-12-25
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    相关资源
    最近更新 更多