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()函数。
我该怎么做?
答案 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();}}