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

时间:2013-11-04 23:14:10

标签: javascript

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;
    }
}

这些是我的JS代码

<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()" />

这些是我的HTML代码。

单击“发送”按钮时。首先alert("Your message sent.");然后alert("nickname or message is blank. Please fill.");正在运作。或者完全相反。

如果wrongNickNameorMessage()为true,我想禁用send()函数。

我该怎么做?

3 个答案:

答案 0 :(得分:1)

你有正确的想法,但你非常偏僻。试试这个:

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.");
}

您不需要if语句的其他功能或其他部分,因为您只是验证输入。您可以获得更多创意,但这是您真正需要的。如果出现问题,您的功能将完全停止,否则,它会显示正确的信息并提交。

答案 1 :(得分:1)

虽然你的练习很糟糕,但这可能会对你有所帮助:

/* 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;
  }
}

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

答案 2 :(得分:-1)

您需要调用一个将调用wrongNickNameorMessage()检查结果的包装器方法,而不是仅在返回true时才继续。

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