使用 javascript 更新文本框
Updating a text box with javascript
我在使用某些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
循环浏览此参考的所有页面)。
- 使用Javascript更新输入框中的文本
- 基于单选框更新页眉,选中并选择输入文本
- jQuery基于下拉选择更新帮助文本
- 如何为动态创建的文本区域中输入的值更新ng模型
- Angular JS-文本框未在独立范围内更新
- 浏览器之间的文本区域更新方式不同
- 表单文本框未自动更新
- 在文本输入区域中创建双向更新
- 如何在d3中更新带有附带文本的条形图
- 如何更新按钮内部的文本,每行重复一次
- 为什么我的文本框没有用查询结果更新
- 更改<pre>在文本区域更新时阻止内容
- CKeditor不会在源代码模式下更新文本区域
- 当输入位于标签内时,更新无线电标签文本
- 页面重定向后,使用选定的选项文本更新下拉菜单文本
- 使用JavaScript用图像和文本更新页面后,iPad上的Chrome浏览器中的网站闪烁/闪烁
- 使用CloudMQTT进行Node JS实时文本更新
- 确定下拉列表选择并将文本更新到数据库
- Javascript POST请求更新,没有HTML文本更新
- 等待UI文本更新