我有一个包含各种输入的表单来搜索地址。加载页面时只会显示省和邮政编码,但可以选择打开切换按钮以显示更多选项,例如街道名称等。基本上,我想要实现的是切换保留如果选择和文本输入不为空(''和0),则在页面再次加载时打开。
我有大部分逻辑,但我的问题是我的if / else语句只查看它获得的最后一个值。
var allInputsValue;
var allInputs; //for testing purposes
$('.address-options').each(
function(){
allInputs = $(this); //for testing purposes
allInputsValue = $(this).val();
//console.log('Type: ' + allInputs.attr('type') + ' Name: ' + allInputs.attr('name') + ' Value: ' + allInputs.val());
//console.log(' ID: ' + allInputs.attr('id') + '\n' + ' Value: ' + allInputs.val());
console.log('Value: ' + allInputsValue);
}
);
//if($('#civicNo').val() == '', $('#streetName').val() == ''){
if(allInputsValue === '' || allInputsValue === 0){
alert("Empty fields");
if (localStorage) {
localStorage.setItem('addressOptions', 'closed');
}
togglePane("closed");
}else{
alert("Fields not empty");
if (localStorage) {
localStorage.setItem('addressOptions', 'open');
}
togglePane("open");
}
我试图保持代码相当干净,而不必为每个输入ID执行其他操作。
在控制台日志中,我找回了我正在寻找的所有正确值。我错过了什么?
答案 0 :(得分:2)
您需要将if-else
放在.each
var allInputsValue;
var allInputs; //for testing purposes
$('.address-options').each(
function(){
allInputs = $(this); //for testing purposes
allInputsValue = $(this).val();
//console.log('Type: ' + allInputs.attr('type') + ' Name: ' + allInputs.attr('name') + ' Value: ' + allInputs.val());
//console.log(' ID: ' + allInputs.attr('id') + '\n' + ' Value: ' + allInputs.val());
console.log('Value: ' + allInputsValue);
//if($('#civicNo').val() == '', $('#streetName').val() == ''){
if(allInputsValue === '' || allInputsValue === 0){
alert("Empty fields");
if (localStorage) {
localStorage.setItem('addressOptions', 'closed');
}
togglePane("closed");
}else{
alert("Fields not empty");
if (localStorage) {
localStorage.setItem('addressOptions', 'open');
}
togglePane("open");
}
}
);
答案 1 :(得分:1)
它可能只是我的眼睛,但看起来你的if / else语句在循环之外。它需要在循环中
var allInputsValue;
var allInputs; //for testing purposes
$('.address-options').each(
function(){
allInputs = $(this); //for testing purposes
allInputsValue = $(this).val();
//console.log('Type: ' + allInputs.attr('type') + ' Name: ' + allInputs.attr('name') + ' Value: ' + allInputs.val());
//console.log(' ID: ' + allInputs.attr('id') + '\n' + ' Value: ' + allInputs.val());
console.log('Value: ' + allInputsValue);
}
// ); This needs to be below
//if($('#civicNo').val() == '', $('#streetName').val() == ''){
if(allInputsValue === '' || allInputsValue === 0){
alert("Empty fields");
if (localStorage) {
localStorage.setItem('addressOptions', 'closed');
}
togglePane("closed");
}else{
alert("Fields not empty");
if (localStorage) {
localStorage.setItem('addressOptions', 'open');
}
togglePane("open");
}
**);**