0
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() 为真,我想禁用 send() 功能。

我怎样才能做到这一点?

4

3 回答 3

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 语句的其他部分,因为您只是在验证输入。您可以获得更多创意,但这就是您真正需要的。如果出现问题,您的功能将完全停止,否则,它将显示正确的消息并提交。

于 2013-11-04T23:22:45.490 回答
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 可以被禁用,所以你也必须考虑到这一点,服务器端。

于 2013-11-04T23:32:42.163 回答
-1

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

function conditionalSend(){if (wrongNickNameorMessage()){send();}}
于 2013-11-04T23:17:25.883 回答