【问题标题】:Button changes form textarea input by button id按钮通过按钮 id 更改表单 textarea 输入
【发布时间】:2013-11-21 17:17:27
【问题描述】:

我想在表单中添加其他按钮,以将键盘输入扩展到文本区域。按钮字符包括美国本土语言的 unicode 组合。

var newtext = document.myform.inputtext.value;
document.myform.outputtext.value += newtext; 

基本上,我很难弄清楚如何更改 inputtext 以更改按钮 ID。所有的按钮都在一个

任何帮助将不胜感激。

t̕ igʷicid 谢谢

访问http://jsfiddle.net/dsienko/a2YmL/

最终目标是一个电话短信应用程序。我正在使用 Dreamweaver 和 Phonegap。

【问题讨论】:

    标签: javascript html web-applications cordova dreamweaver


    【解决方案1】:

    如果我理解正确,您只想将正确的值附加到输入字段。

    如果我的解释是正确的,你有一个问题,因为函数 addText 不知道点击了哪个按钮。

    一个非常糟糕的解决方案是给它一个等于按钮值的参数。例如

    <input type="button" id="c-wedge" onClick="addtext('č');" value="č" />
    

    它会让你重复值,我们都知道重复是不好的。

    更好的解决方案是拥有一个函数,它会知道是谁调用了它。这可以通过将关键字 this 传递给函数来实现。

    <input type="button" id="c-wedge" onClick="addtext(this);" value="č" />
    
    function addtext(that) {
    
        var nexttest = that.value;
        document.myform.outputtext.value += newtext;
    } 
    

    这样稍微好一点,因为只知道一个函数处理所有按钮,但是每个按钮都需要属性onClick,所以它可以变得更好。如果 Javascript 只放在一个位置,那就太好了。

    如果您创建一个特殊的 div 并使其包含所有按钮而不包含其他任何内容,您可以执行以下操作:

    document.getElementById('lut-btn').onclick = function (e) {
        var dest = e.target;
        document.myform.outputtext.value += dest.value;
    };
    

    这个小代码 sn-p 试图找到包含所有按钮的 div 并注册一个点击事件处理程序。这是有效的,因为这个 div 内的任何元素都会触发一个 click 事件,该事件将由注册的函数处理。尽管您必须考虑到存在更好的注册事件处理程序的方法,但您应该探索它们。

    这绝不是一个完整的列表,但它应该是一个足够的起点。

    【讨论】:

    • 完美!我使用了第一段代码并修改了要添加的按钮(this)。我可以说出问题所在,但不是正确的解决方案。 t̕ igʷicid ti dsyaʔyaʔ。谢谢你,我的朋友。
    猜你喜欢
    • 1970-01-01
    • 2014-04-17
    • 2014-11-13
    • 1970-01-01
    • 2016-09-11
    • 2023-04-03
    • 2016-06-24
    • 2012-07-04
    • 2021-07-02
    相关资源
    最近更新 更多