希望这是基本的JavaScript,答案很简单,因为我是新手。我只想确保在用户继续操作之前所有必填字段都不是空白。在我的<form>
action
=
payment.php
中,提交按钮包含onclick="insert();"
当child_name留空时,它只会进入下一页而不是提醒。这是代码:
<script type="text/javascript">
function insert() {
if (window.XMLHttpRequest) {
xmlhttp = new XLMHttpRequest();
} else {
xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
}
cn1 = 'child_name'+document.getElementById('child_name').value;
ag2 = 'age'+document.getElementById('age').value;
hm3 = 'hometown'+document.getElementById('hometown').value;
bg4 = 'boy_girl'+document.getElementById('boy_girl').value;
fn5 = 'first_name'+document.getElementById('first_name').value;
ln6 = 'last_name'+document.getElementById('last_name').value;
email = 'email'+document.getElementById('email').value;
ad8 = 'address1'+document.getElementById('address1').value;
ad9 = 'address2'+document.getElementById('address2').value;
ct10 = 'city'+document.getElementById('city').value;
st11 = 'state'+document.getElementById('state').value;
zp12 = 'zip'+document.getElementById('zip').value;
if (cn1.equals("")) {
xmlhttp.open('POST', 'payment.php', true);
xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xmlhttp.send(cn1&ag2&hm3&bg4&fn5&ln6&email$ad8&ad9&ct10&st11&zp12);
} else {
alert ("Please enter all required fields.");
}
}
</script>
答案 0 :(得分:2)
这里有几个问题:
cn1 = 'child_name'+document.getElementById('child_name').value;
在这种情况下,您将cn1分配给字符串'child_name'
+ child_name文本框的值...它永远不会等于空字符串。
其次,您希望insert()
方法在出错时返回false
,以便停止按钮的预期操作。
答案 1 :(得分:1)
尝试将函数更改为:(注意:您必须为其余元素的if子句添加更多测试)
function insert() {
if (window.XMLHttpRequest) {
xmlhttp = new XLMHttpRequest();
} else {
xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
}
if (document.getElementById('child_name').value === '' ||
document.getElementById('age').value === '' ||
...more tests... ||
document.getElementById('zip').value === '') {
alert ("Please enter all required fields.");
return false;
} else {
cn1 = 'child_name'+document.getElementById('child_name').value;
ag2 = 'age'+document.getElementById('age').value;
hm3 = 'hometown'+document.getElementById('hometown').value;
bg4 = 'boy_girl'+document.getElementById('boy_girl').value;
fn5 = 'first_name'+document.getElementById('first_name').value;
ln6 = 'last_name'+document.getElementById('last_name').value;
email = 'email'+document.getElementById('email').value;
ad8 = 'address1'+document.getElementById('address1').value;
ad9 = 'address2'+document.getElementById('address2').value;
ct10 = 'city'+document.getElementById('city').value;
st11 = 'state'+document.getElementById('state').value;
zp12 = 'zip'+document.getElementById('zip').value;
xmlhttp.open('POST', 'payment.php', true);
xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xmlhttp.send(cn1&ag2&hm3&bg4&fn5&ln6&email$ad8&ad9&ct10&st11&zp12);
}
}
答案 2 :(得分:1)
如果我是你,我会给这些元素中的每一个提供一个共同的名称或类别。
例如:
<input id="child_name" class="not_blank" type="text">
<input id="age" class="not_blank" type="text">
<input id="hometown" class="not_blank" type="text">
由于您将所有这些元素按类绑定。
然后你的javascript会更容易:
var flagInvalid = false;
var tempArray = document.getElementsByClassName("not_blank");
for (var i = 0; i < tempArray.length; i++)
{
if (tempArray[i].value == "" || tempArray[i].value === undefined || tempArray[i].value == null){
flagInvalid = true;
break;
}
}
if (flagInvalid == false){
xmlhttp.open('POST', 'payment.php', true);
xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xmlhttp.send(cn1&ag2&hm3&bg4&fn5&ln6&email$ad8&ad9&ct10&st11&zp12);
} else { alert ("Please enter all required fields."); }
是的,我强烈建议不要使用“警报”。尝试在文档本身上创建消息传递系统。像:
<span id="log" class="hidden" style="color:red"><b>"Please enter all required fields." <b></span>
你的css看起来像这样:
.hidden { display: none; }
.show { display: inline; }
您的javascript将更改为:
if (flagInvalid == false){
var log = document.getElementById("log");
log.className = 'hidden';
xmlhttp.open('POST', 'payment.php', true);
xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xmlhttp.send(cn1&ag2&hm3&bg4&fn5&ln6&email$ad8&ad9&ct10&st11&zp12);
} else {
var log = document.getElementById("log");
log.className = 'show';
}