Javascript 由于两个条件,使用JS隐藏元素
我对JavaScript不太熟悉。到目前为止,我所做的是隐藏我表单的一部分,见下:Memo,当有人通过onchange字段名:ordernumber更改输入文本字段时 因此,我使用这个函数:Javascript 由于两个条件,使用JS隐藏元素,javascript,function,if-statement,hide,Javascript,Function,If Statement,Hide,我对JavaScript不太熟悉。到目前为止,我所做的是隐藏我表单的一部分,见下:Memo,当有人通过onchange字段名:ordernumber更改输入文本字段时 因此,我使用这个函数: <script language="JavaScript" type="text/javascript"> function takeawayfield() { dok=0; if (document.getElementById("ordernumber").changed == true
<script language="JavaScript" type="text/javascript">
function takeawayfield()
{ dok=0;
if (document.getElementById("ordernumber").changed == true) dok=1
if (dok==0)
{document.getElementById("Memo").style.display = "none";}
else
{document.getElementById("Meno").style.display = "inline";}
}
</script>
有两件事不适合这个选项:当只有一个条件为真时,它会执行,尽管我使用了&&并且它似乎与从下拉列表中选择哪个选项无关。现在它对每个选项都执行,但它应该只对sys1执行
顺便说一句:我将onchange=javascript:takeawayfield添加到受影响的表单元素input text和select选项中。我想是这样吧
我做错了什么
提前谢谢
编辑:
以下是html标记:
试试这个:
var dok = 0,
initialValue = "",
ordernumber = null,
system = null,
memo = null;
window.onload = function() {
// get dom objects
ordernumber = document.getElementById("ordernumber");
system = document.getElementById("system");
memo = document.getElementById("Memo");
// set initial value
initialValue = ordernumber.value;
};
function takeawayfield() {
if (ordernumber.value != initialValue && system.value == "sys1") {
dok = 0;
memo.style.display = "none";
} else {
dok = 1;
memo.style.display = "inline";
}
};
如果您的下拉选择/选项在选项标签中有值,那么下面的代码应该可以正常工作。在用户选择 选择以下选项,例如:
<select id="system">
<option value="sys1">system 1</option>
</select>
或者更改代码:
if (document.getElementById("ordernumber").changed == true) dok=1;
else dok=0;
if (document.getElementById("system").value == "sys1") dok=1
else dok=0;
如果您想在页面加载后对用户的更改做出反应,可以监听输入框和下拉列表的keyup事件 下面是一个例子:
window.onload = function() {
document.getElementById("ordernumber").addEventListener('keyup', takeawayfield, false);
document.getElementById("system").addEventListener('change', takeawayfield, false);
function takeawayfield()
{
if (document.getElementById("system").value == "sys1") {
toggleMemo(false);
}
else {
toggleMemo(true);
}
}
function toggleMemo(show) {
var memo = document.getElementById("Memo");
if (show) {
memo.style.display = "inline";
}
else {
memo.style.display = "none";
}
}
};
换了什么?请同时显示这两个字段的html标记。我不确定我是否理解您需要什么,如果您有onchange事件,为什么还要尝试查看textbox值是否已更改?您是否应该检查字段中是否确实有值?顺便说一句,我认为没有什么东西是改变了的。@Bergi这是标签:'@Felix:请把它们写进你的问题中,你应该知道我也是这么想的。我想问题是连接这两个条件,选择了sys1,订单号改变了吗?哦,我明白了。如果document.getElementByIdordernumber.changed为false,则此行不继续。它不会检查选择/选项值。所以,也许你可以试着用它或条件。不,不幸的是,这并不能解决问题。我认为运算符“&&”的意思是,与它相关的所有条件都必须是真的,这才是我真正需要的。我刷新了我的解决方案。你试过这个吗?如果document.getElementByIdordernumber.changed==true-dok=1;else-dok=0;如果document.getElementByIdsystem.value==sys1 dok=1,则为else dok=0;看起来不错,但每次我选择其他选项和更改订单号时,都会显示并取消显示备忘录。我想要的是,当ordernumber被更改并且从下拉列表中选择sys1时,Memo保持隐藏。你的意思是简单吗?或者,如果选择了sys1或更改了订单号,便笺是否应该隐藏?否,便笺应该在选择sys1和更改订单号时隐藏。好的,然后您可以签出我的版本。我已经更新了。这很好用!这将需要一些时间来理解这个语法,但无论如何。。。谢谢!
if (document.getElementById("ordernumber").changed == true) dok=1;
else dok=0;
if (document.getElementById("system").value == "sys1") dok=1
else dok=0;
window.onload = function() {
document.getElementById("ordernumber").addEventListener('keyup', takeawayfield, false);
document.getElementById("system").addEventListener('change', takeawayfield, false);
function takeawayfield()
{
if (document.getElementById("system").value == "sys1") {
toggleMemo(false);
}
else {
toggleMemo(true);
}
}
function toggleMemo(show) {
var memo = document.getElementById("Memo");
if (show) {
memo.style.display = "inline";
}
else {
memo.style.display = "none";
}
}
};