Javascript 如何在启用另一个功能时禁用该功能?

Javascript 如何在启用另一个功能时禁用该功能?,javascript,Javascript,这些是我的JS代码 function send() { alert("Your message sent."); } function wrongNickNameorMessage() { var nicknameValue = document.getElementById("input-nickname").value; var messageValue = document.getElementById("input-text").value; if (n

这些是我的JS代码

function send() {
    alert("Your message sent.");
}

function wrongNickNameorMessage() {
    var nicknameValue = document.getElementById("input-nickname").value;
    var messageValue = document.getElementById("input-text").value;
    if (nicknameValue != "" && messageValue != "") {
        document.getElementById("af-form").submit();
    } else {
        alert("Nickname or message is blank. Please fill.");
        return false;
    }
}

这些是我的HTML代码

当我点击发送按钮时。第一个
警报(“您的消息已发送”)然后
提醒(“昵称或消息为空,请填写”)正在工作。或者正好相反

我想禁用send()函数,如果Error昵称OrMessage()为true


如何才能做到这一点?

您需要调用一个包装器方法,该方法将调用错误的昵称或消息()检查结果,然后仅在返回true时才继续

<input type="text" name="nickname" id="input-nickname" required>

<textarea name="message" type="text" id="input-text" required></textarea>

<input type="submit" value="Send" onclick="wrongNickNameorMessage() + send()" />

你的想法是对的,但你做得太离谱了。试试这个:

function conditionalSend(){if (wrongNickNameorMessage()){send();}}

您不需要其他函数或if语句的其他部分,因为您只是在验证输入。你可以变得更有创造力,但这就是你真正需要的。如果出现问题,您的函数将完全停止,否则,它将显示正确的消息并提交。

尽管您的做法很糟糕,但这可能会在将来帮助您:

function wrongNickNameorMessage() {
    var nicknameValue = document.getElementById("input-nickname").value;
    var messageValue = document.getElementById("input-text").value;
    if (nicknameValue === "" || messageValue === "") {
        alert("Nickname or message is blank or improper input detected. Please fill.");
        return false;
    }
    document.getElementById("af-form").submit();
    alert("Your message sent.");
}
/*首先给提交按钮一个id或什么,不要使用onclick
属性
*/
//现在是JavaScript,它应该是外部缓存。
var doc=单据;
//永远不必再次使用document.getElementById()
职能E(E){
返回单据getElementById(e);
}
函数send(){
警报('您的消息已发送');
}
//把你所有的东西都放在这里
E('sub')。onclick=function(){
变量昵称值=E(‘输入昵称’)。值;
var messageValue=E('input-text')。值;
如果(昵称值!=''&&messageValue!=''){
send();E('af-form')。submit();
}
否则{
警报('昵称或消息为空,请填写');
返回false;
}
}

请注意,这不足以处理表单。这只是一个概念。JavaScript可以被禁用,所以您也必须考虑到这一点,服务器端。

我就是这样使用的。你的功能发挥了一半作用。当我去掉昵称和消息时,你们的函数起作用了,但当我填充它们时,send()函数不起作用了。似乎是合乎逻辑的。我在努力,伙计。是的,我知道。我是个新手。谢谢你,伙计。
/* first give your submit button an id or something and don't use the onclick 
   attribute
*/
<input type='submit' value='Send' id='sub' />

// Now the JavaScript, which should be external for caching.
var doc = document;
// never have to use document.getElementById() again
function E(e){
  return doc.getElementById(e);
}
function send() {
  alert('Your message was sent.');
}
// put all your sub onclick stuff in here
E('sub').onclick = function(){
  var nicknameValue = E('input-nickname').value;
  var messageValue = E('input-text').value;
  if(nicknameValue !== '' && messageValue !== '') {
    send(); E('af-form').submit();
  }
  else {
    alert('Nickname or message is blank. Please fill.');
    return false;
  }
}