使用 javascript 更新文本框

Updating a text box with javascript

本文关键字:文本 更新 javascript 使用      更新时间:2023-09-26

我在使用某些javascript以及它如何控制html"文本框"时遇到了一些问题。

首先,这是我所拥有的;JavaScript:

function UpdateOrder()
{
    // enable/disable appropriate buttons
    document.getElementById("reset").disabled=false;
    document.getElementById("add").disabled=false;
    document.getElementById("submit").disabled=false;
    document.getElementById("edit").disabled=false;
    document.getElementById("update").disabled=true;
    // Show display box, 'DispCurOrder'
    document.getElementById('all_labels').disabled=true;
}
function EditOrder()
{
    // enable/disable appropriate buttons
    document.getElementById("reset").disabled=true;
    document.getElementById("add").disabled=true;
    document.getElementById("submit").disabled=true;
    document.getElementById("edit").disabled=true;
    document.getElementById("update").disabled=false;
    document.getElementById('all_labels').disabled=false;
}

这个想法很简单... 我有一些按钮和输入来生成一"行"文本,这些文本被转储到禁用的文本框中。 如果操作员注意到他们做了一个 type-o 或想要更改某些内容,他们单击"编辑顺序",它会禁用所有常规按钮,并启用文本框和"更新"按钮。 "更新顺序"按钮与此相反。

现在,当我只使用向文本框添加行时,一切正常。 你可以看到每一行都附加到文本框中(还有另一个java函数可以执行一堆错误检查之类的,但关键是它获取文本框的内容,在"'"上将其解析为数组,然后附加新的文本行。 然后,它获取数组并将其全部组合为新字符串,并将其放回文本框中。 这是没有所有错误检查内容的部分;

function AppendOrder()
{
    // let's set up an error flag.
    var AppendError="";
    var str1=document.forms["MyForm"].DataEntry1.value;
    var str2=document.forms["MyForm"].DataEntry2.value;
    if( /* checking variable str1 for errors */)
    {
        AppendError="Error in str 1 here";
    }
    if( /* checking variable str1 for errors */)
    {
        AppendError=AppendError+"Error in str 2 here";
    }
    // Display the error message, if there are no errors, it will clear what was there.
    $('#AppendStatus').html(AppendError);
    if(AppendError=="")
    {
        // it's all good, update the display
        // create line of text
        curEntry=str1 + " -- " + str2;
        // let's get the current order into a list
        str=document.getElementById('all_data').innerHTML;
        if(str1=="Empty")
        {
            // make curOrder = to 1 element array of curEntry
            var curOrder=[curEntry];
        }
        else
        {
            // parse str1 into an array and parse it to curOrder.
                    // Then push curEntry on the end.
            var curOrder=str1.split("'n");
            curOrder.push(curEntry);
        }
        // now we should have an array called 'curOrder[]'.  Let's show it 
            // on the web page.
        $('#all_labels').html(curOrder);
    }
}
现在,我

遇到的问题是,在我使用"添加"按钮向显示屏添加一两行(或更多)然后进入"编辑"模式(启用文本框)并进行所有更改后,"添加"按钮不起作用。

奇怪的是,当我按下"重置"按钮(只是一个重置按钮)时,它会显示我在编辑后所做的所有添加,并且编辑的内容消失了。

现在。。。对问题... 关于文本框,我有什么不明白的地方吗? 我需要做一些技巧才能让它工作吗? 我做错了吗? 我应该为此使用"文本框"以外的其他工具吗?

任何帮助都非常感谢!!

格雷格

在你的jsFiddle中找到了拼写错误。

我做的第一件事是添加:

alert('hi there');

到脚本的最顶部,在$(document).ready()包装器内。请注意,在jsFiddle上你看不到document.ready包装器,它是无形的,所以只需像我一样将警报放在javascript块的顶部(链接到我的新jsFiddle在答案的底部)

接下来,我注意到您通过按 ID 单独引用它们来启用/禁用多个控件。如果多个控件共享同一个类,则可以一次引用多个控件,因此我发明了class="orderentry"并将该属性添加到每个控件中。这删除了 8 行代码,使故障排除更容易。

然后,我开始删除/取消删除。 首先,我删除了javascript面板中除alert('hi there');之外的所有内容,并运行了jsFiddle。警报弹出。 伟大。所以我使用 Ctrl+z 取消删除所有内容。接下来,我选择了除下一个代码块之外的所有内容,并删除了该选择。我运行了jsFiddle,再次弹出警报。

继续删除/取消删除,直到我发现警报不再起作用 - 这揭示了有问题的代码块。只需要仔细研究该特定区域的语法并发现错误:

$('#txtOrder').attr({'disabled':'disabled')};  <== ERROR: note final parentheses

而不是

$('#txtOrder').attr({'disabled':'disabled'});  <== CORRECT: note final parentheses

希望这有所帮助,祝您项目的其余部分好运。

这是更正的 jsFiddle

你没有分享你的HTML,所以我对你的标记做了假设。

在这里工作 jsFiddle

上面的jsFiddle是你正在创建的内容的简化版本。显然,它与您所做的非常不同,因此我可以快速创建它。

观察我是如何用jQuery让某些事情发生的;拿有用的东西,忽略其余的。

具体来说,您可以看到我最初是如何禁用文本区域控件的:

$('#txtArea').attr({'disabled':'disabled'});

重新启用文本区域控件以进行编辑,同时隐藏"编辑"按钮并显示"保存"按钮:

$('#txtArea').removeAttr('disabled');
$('#btnSave').show();
$(this).hide();

重要的是,这就是我确保每次添加都会添加(而不是覆盖)现有内容的方式:

var ord = 'Requested By: ' + $('#txtReq').val() + ''r'n';

很可能你已经知道我指出的许多(大部分?)事情,但我不知道你知道什么,所以,再次,保留一两件你认为有用的事情,忽略其余的。 我只希望我已经设法击中了你目前难倒的那一点。


我很少推荐W3Schools,但在这里寻找他们对jQuery选择器,事件,方法的出色总结/参考。(继续按Next Chapter循环浏览此参考的所有页面)。