Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript>onChange输入并选择updatetextarea_Javascript_Onchange - Fatal编程技术网

JavaScript>onChange输入并选择updatetextarea

JavaScript>onChange输入并选择updatetextarea,javascript,onchange,Javascript,Onchange,我有一个表单,用于编辑需要编辑原因的票证。我想做的是,当任何输入字段或选择下拉列表更改时,自动填充该字段。我知道这可以通过javascript和onChange事件来完成,并让它修改我相信textarea的innerHTML。我擅长PHP/MySQL,但javascript绝对是我的弱点 我不知道并且一直没有成功搜索的,就是如何编写代码。作为示例,我将使用以下代码: <!-- Customers name --> <input type='text' name='custome

我有一个表单,用于编辑需要编辑原因的票证。我想做的是,当任何输入字段或选择下拉列表更改时,自动填充该字段。我知道这可以通过javascript和onChange事件来完成,并让它修改我相信textarea的innerHTML。我擅长PHP/MySQL,但javascript绝对是我的弱点

我不知道并且一直没有成功搜索的,就是如何编写代码。作为示例,我将使用以下代码:

<!-- Customers name -->
<input type='text' name='customer_name' onChange="updateReason('Updated Customer Name')" /><br><br>

<!-- Customer Email -->
<input type='text' name='customer_email' onChange="updateReason('Updated Customer Email')" />
如果这两个字段中的任何一个发生更改,则textarea的内容将被更新,并以回车结束

我们非常感谢您提供的任何帮助,甚至是向正确方向推送的帮助/指南链接。

HTML:

<form name="frmTest" action="test.html">
    <textarea name="reason"></textarea>

    <!-- Customers name -->
    <input type='text' name='customer_name' onChange="updateReason('Updated Customer Name')" />

    <!-- Customer Email -->
    <input type='text' name='customer_email' onChange="updateReason('Updated Customer Email')" />
</form>

需要更新的输入标记给它id或类,每个标记都有唯一的id,所以最好这样给它id

<input type='text' id="id-name" />
您需要在html页面中添加并附加jQuery文件。附件写在头标签上,如下所示

<head>
     <script src="jquery.min.js"></script>
</head>
在下面的输入标记上,调用函数updateReason。脚本标记中的代码写在同一个html文件中,如果您想将JavaScript或jQuery代码与html分开,您可以在不带脚本标记的.js文件中编写该代码,然后将该文件附加到html页面中

<input type='text' name='customer_name' onChange="updateReason('Updated Customer Name')" />

<script>
function updateReason(text)
{
    // # is used for id and . is used for referring class in jQuery
    $('#id-name').val(text);
}
</script>

我的实现将业务逻辑与设计分离。它还使用了JavaScript的更高级功能,几乎每个浏览器都支持这些功能

对于懒惰的人,创建一个文本区域,如下所示:

<input type="text" name="customer_name" id="customer_name" /><br /><br />
<input type="text" name="customer_email" id="customer_email" /><br /><br />
<textarea name="customer_change_log" id="customer_change_log" readonly="readonly"></textarea>
​
一点CSS也不会伤害任何人

#customer_change_log {
    height: 5em;
    resize: vertical;
    width: 15em;
}​

有点不同的方法:

HTML:


您正在使用jQuery吗?或者只是原生HTML?目前没有jQuery,但我也不会反对。你试过什么了吗?顺便说一句,jQuery对于这个简单的东西来说太难了。你应该选择jQuery。这很简单,将来会对你有所帮助。它的标签行也写着“写得少,做得多”。我在下面贴了一个jQuery示例,你可以看到,如果你得到什么,你可以问。但是你应该选择jQuery。太好了!非常感谢:嗯,如果我更改多个字段,只有最新的字段才会反映在文本区域中。我试着把它改成,但那只会把一切都弄糟。是否有办法使其继续为每个输入/选择更改添加新条目?
(function () {
    'use strict';

    var updateReason = function (reason) {
        document.getElementById('customer_change_log').innerHTML += reason + '\n';
    };

    document.getElementById('customer_name').onchange = function () {
        updateReason('Updated Customer Name');
    };
    document.getElementById('customer_email').onchange = function () {
        updateReason('Updated Customer Email');
    };
}());​
#customer_change_log {
    height: 5em;
    resize: vertical;
    width: 15em;
}​
<p><label>Customer Name: <input type='text' name='customer_name'/></label></p>
<p><label>Customer Email: <input type='text' name='customer_email'/></label></p>
<p><label>Edit Reason: <textarea id="edit_reason" rows="6" cols="60"></textarea></label></p>​
(function() {
    var reasons = {
        'customer_name': 'Updated Customer Name',
        'customer_email': 'Updated Customer Email'
    };
    var inputs = document.getElementsByTagName("INPUT"), len, i, input;
    var editReason = document.getElementById("edit_reason"), reasonText;

    for (i = 0, len = inputs.length; i < len; i++) {
        input = inputs[i];
        input.onchange = (function(name) {
            return function() {
                reasonText = editReason.value || "";
                if (reasons[name]) {
                    if (reasonText.indexOf(reasons[name]) < 0) {
                        editReason.value = reasonText + '\n' +  reasons[name];
                        editReason.value = editReason.value.replace(/^\n+/, '');
                    }
                }
            };
        }(input.name));
    };
}());
    var reasons = {
        'customer_name': 'Updated Customer Name',
        'customer_email': 'Updated Customer Email'
    };