Javascript 如何检查JS中缺少的变量?

Javascript 如何检查JS中缺少的变量?,javascript,forms,onsubmit,Javascript,Forms,Onsubmit,我试图在允许表单提交之前检查变量是否存在 目前,用户在表单中输入地址,autocomplete将lat和long添加到表单中。我写了下面的js function check() { let latitude = document.getElementById("latitude").value; if (latitude == null) { window.prompt("ned a correct address", ""); return fa

我试图在允许表单提交之前检查变量是否存在

目前,用户在表单中输入地址,autocomplete将lat和long添加到表单中。我写了下面的js

function check() {
    let latitude = document.getElementById("latitude").value;
    if (latitude == null) {
        window.prompt("ned a correct address", "");
        return false;
    } else {
        alert('It worked');
        return true;
    }
}
当我提交一个没有lat和long自动完成的地址时,我仍然得到“它工作了”

这是我的表格

<form method="GET" action="/search" onsubmit="check()">
    <input class="form-control" id="getaddy" type="text" placeholder="Search..." name="term" onFocus="geo()">
    <input id="latitude" type="hidden" name="latitude">
    <input id="longitude" type="hidden" name="longitude">
</form>


> p>这里有一些事情需要考虑,以便更可靠的表单验证;
  • 如果验证失败,建议使用事件对象取消提交操作
  • 通过测试“空字符串”而不是
    null
  • 确保脚本中没有抛出错误(即确保定义了
    geo()
    等),以便实际调用
    check()
    ,而不是由于另一个脚本错误而导致调用失败
  • 以下更改可能会有所帮助:

    //传递事件对象
    功能检查(事件){
    让address=document.getElementById(“getaddy”).value;
    //检查空字符串,而不是空字符串
    如果(地址=“”){
    window.prompt(“ned a correct address”,”);
    //使用事件#preventDefault()防止提交
    //作为返回的更可靠的替代方案
    //假的
    event.preventDefault();
    }否则{
    警惕(“它起作用了”);
    }
    }
    //确保定义了geo(),查看表单是否依赖于此
    函数geo(){}
    
    
    > p>这里有一些事情需要考虑,以便更可靠的表单验证;
  • 如果验证失败,建议使用事件对象取消提交操作
  • 通过测试“空字符串”而不是
    null
  • 确保脚本中没有抛出错误(即确保定义了
    geo()
    等),以便实际调用
    check()
    ,而不是由于另一个脚本错误而导致调用失败
  • 以下更改可能会有所帮助:

    //传递事件对象
    功能检查(事件){
    让address=document.getElementById(“getaddy”).value;
    //检查空字符串,而不是空字符串
    如果(地址=“”){
    window.prompt(“ned a correct address”,”);
    //使用事件#preventDefault()防止提交
    //作为返回的更可靠的替代方案
    //假的
    event.preventDefault();
    }否则{
    警惕(“它起作用了”);
    }
    }
    //确保定义了geo(),查看表单是否依赖于此
    函数geo(){}

    如果您确实想检查变量是否存在,有一种安全的方法,可以使用:

    if(variable) {
      // Truthy
    } else {
      // Falsy
    }
    
    这样,您就可以得到所有可能的
    Falsy
    场景,包括:
    null
    未定义的
    NaN
    0
    ,最后是
    false
    本身。。。没有检查每一个

    以下是已编辑的代码段:

    函数检查(){
    让纬度=document.getElementById(“纬度”).value;
    if(纬度){
    警惕(“它起作用了”);
    返回true;
    }否则{
    window.prompt(“ned a correct address”,”);
    返回false;
    }
    }

    如果您确实想检查变量是否存在,有一种安全的方法,可以使用:

    if(variable) {
      // Truthy
    } else {
      // Falsy
    }
    
    这样,您就可以得到所有可能的
    Falsy
    场景,包括:
    null
    未定义的
    NaN
    0
    ,最后是
    false
    本身。。。没有检查每一个

    以下是已编辑的代码段:

    函数检查(){
    让纬度=document.getElementById(“纬度”).value;
    if(纬度){
    警惕(“它起作用了”);
    返回true;
    }否则{
    window.prompt(“ned a correct address”,”);
    返回false;
    }
    }
    
    
    调试此代码时,在您描述的场景中,
    纬度
    在条件下的值是多少?@csmckelvey更正了下面答案中的错误:-)调试此代码时,在您描述的场景中,
    latitude
    在条件下的值是多少?@csmckelvey更正了下面答案中的错误:-)如果您对简洁感兴趣,您可以简单地执行
    return!!纬度
    而不是整个
    如果
    部分:)你会失去警报。太棒了!这就成功了。非常感谢OP并不是真正测试变量是否存在,而是测试表单控件中是否输入了某些内容。在这种情况下,应根据适当的标准测试该值,因此
    如果(纬度=“”)
    最好是在执行测试时,其值必须是字符串。虽然如果您对简洁感兴趣,最好测试
    -90,但您可以简单地执行
    返回!!纬度
    而不是整个
    如果
    部分:)你会失去警报。太棒了!这就成功了。非常感谢OP并不是真正测试变量是否存在,而是测试表单控件中是否输入了某些内容。在这种情况下,应根据适当的标准测试该值,因此
    如果(纬度=“”)
    最好是在执行测试时,其值必须是字符串。尽管测试
    -90也会更好